medusa-plugin-barcodes 0.1.0
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/.medusa/server/medusa-config.d.ts +1 -0
- package/.medusa/server/medusa-config.js +23 -0
- package/.medusa/server/src/admin/index.js +22 -0
- package/.medusa/server/src/admin/index.mjs +23 -0
- package/.medusa/server/src/api/admin/barcode-generator/route.d.ts +4 -0
- package/.medusa/server/src/api/admin/barcode-generator/route.js +43 -0
- package/.medusa/server/src/api/admin/barcodes/[id]/render/route.d.ts +1 -0
- package/.medusa/server/src/api/admin/barcodes/[id]/render/route.js +3 -0
- package/.medusa/server/src/api/admin/barcodes/[id]/route.d.ts +5 -0
- package/.medusa/server/src/api/admin/barcodes/[id]/route.js +40 -0
- package/.medusa/server/src/api/admin/barcodes/route.d.ts +5 -0
- package/.medusa/server/src/api/admin/barcodes/route.js +39 -0
- package/.medusa/server/src/api/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/middlewares.js +53 -0
- package/.medusa/server/src/api/validators.d.ts +103 -0
- package/.medusa/server/src/api/validators.js +39 -0
- package/.medusa/server/src/modules/barcode/index.d.ts +22 -0
- package/.medusa/server/src/modules/barcode/index.js +25 -0
- package/.medusa/server/src/modules/barcode/migrations/Migration20260409171736.d.ts +5 -0
- package/.medusa/server/src/modules/barcode/migrations/Migration20260409171736.js +15 -0
- package/.medusa/server/src/modules/barcode/models/barcode.d.ts +5 -0
- package/.medusa/server/src/modules/barcode/models/barcode.js +12 -0
- package/.medusa/server/src/modules/barcode/service.d.ts +15 -0
- package/.medusa/server/src/modules/barcode/service.js +50 -0
- package/LICENSE +21 -0
- package/README.md +48 -0
- package/package.json +86 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
4
|
+
(0, utils_1.loadEnv)(process.env.NODE_ENV || 'development', process.cwd());
|
|
5
|
+
module.exports = (0, utils_1.defineConfig)({
|
|
6
|
+
projectConfig: {
|
|
7
|
+
redisUrl: process.env.REDIS_URL,
|
|
8
|
+
databaseUrl: process.env.DATABASE_URL,
|
|
9
|
+
http: {
|
|
10
|
+
storeCors: process.env.STORE_CORS || 'http://localhost:5173',
|
|
11
|
+
adminCors: process.env.ADMIN_CORS || 'http://localhost:5173,http://localhost:9000',
|
|
12
|
+
authCors: process.env.AUTH_CORS || 'http://localhost:5173,http://localhost:9000',
|
|
13
|
+
jwtSecret: process.env.JWT_SECRET || 'supersecret',
|
|
14
|
+
cookieSecret: process.env.COOKIE_SECRET || 'supersecret'
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
modules: [
|
|
18
|
+
{
|
|
19
|
+
resolve: './src/modules/barcode'
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkdXNhLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL21lZHVzYS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFBaUU7QUFFakUsSUFBQSxlQUFPLEVBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksYUFBYSxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0FBRTdELE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBQSxvQkFBWSxFQUFDO0lBQzdCLGFBQWEsRUFBRTtRQUNkLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVM7UUFDL0IsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWTtRQUNyQyxJQUFJLEVBQUU7WUFDTCxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksdUJBQXVCO1lBQzVELFNBQVMsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSw2Q0FBNkM7WUFDbEYsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLDZDQUE2QztZQUNoRixTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksYUFBYTtZQUNsRCxZQUFZLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksYUFBYTtTQUN4RDtLQUNEO0lBQ0QsT0FBTyxFQUFFO1FBQ1I7WUFDQyxPQUFPLEVBQUUsdUJBQXVCO1NBQ2hDO0tBQ0Q7Q0FDRCxDQUFDLENBQUEifQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const widgetModule = { widgets: [] };
|
|
3
|
+
const routeModule = {
|
|
4
|
+
routes: []
|
|
5
|
+
};
|
|
6
|
+
const menuItemModule = {
|
|
7
|
+
menuItems: []
|
|
8
|
+
};
|
|
9
|
+
const formModule = { customFields: {} };
|
|
10
|
+
const displayModule = {
|
|
11
|
+
displays: {}
|
|
12
|
+
};
|
|
13
|
+
const i18nModule = { resources: {} };
|
|
14
|
+
const plugin = {
|
|
15
|
+
widgetModule,
|
|
16
|
+
routeModule,
|
|
17
|
+
menuItemModule,
|
|
18
|
+
formModule,
|
|
19
|
+
displayModule,
|
|
20
|
+
i18nModule
|
|
21
|
+
};
|
|
22
|
+
module.exports = plugin;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const widgetModule = { widgets: [] };
|
|
2
|
+
const routeModule = {
|
|
3
|
+
routes: []
|
|
4
|
+
};
|
|
5
|
+
const menuItemModule = {
|
|
6
|
+
menuItems: []
|
|
7
|
+
};
|
|
8
|
+
const formModule = { customFields: {} };
|
|
9
|
+
const displayModule = {
|
|
10
|
+
displays: {}
|
|
11
|
+
};
|
|
12
|
+
const i18nModule = { resources: {} };
|
|
13
|
+
const plugin = {
|
|
14
|
+
widgetModule,
|
|
15
|
+
routeModule,
|
|
16
|
+
menuItemModule,
|
|
17
|
+
formModule,
|
|
18
|
+
displayModule,
|
|
19
|
+
i18nModule
|
|
20
|
+
};
|
|
21
|
+
export {
|
|
22
|
+
plugin as default
|
|
23
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { AuthenticatedMedusaRequest, MedusaResponse } from '@medusajs/framework/http';
|
|
2
|
+
import { AdminRenderBarcodeType } from '../../validators';
|
|
3
|
+
export declare const GET: (req: AuthenticatedMedusaRequest<AdminRenderBarcodeType>, res: MedusaResponse) => Promise<void>;
|
|
4
|
+
export declare const POST: (req: AuthenticatedMedusaRequest<AdminRenderBarcodeType>, res: MedusaResponse) => Promise<void>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = exports.GET = void 0;
|
|
4
|
+
const barcode_1 = require("../../../modules/barcode");
|
|
5
|
+
const GET = async (req, res) => {
|
|
6
|
+
let options = req.validatedQuery;
|
|
7
|
+
console.log(options);
|
|
8
|
+
const barcodeService = req.scope.resolve(barcode_1.BARCODE_MODULE);
|
|
9
|
+
// for testing, override options
|
|
10
|
+
let gtin = options.gtin || '00850023754028';
|
|
11
|
+
let serial = options.serial || '20007';
|
|
12
|
+
let text = '(01)' + gtin + '(21)' + serial;
|
|
13
|
+
const buffer = await barcodeService.render({
|
|
14
|
+
bcid: options.bcid || 'gs1datamatrix', // Barcode type
|
|
15
|
+
text: options.text || text, // Barcode value
|
|
16
|
+
height: options.height ? parseInt(options.height) : 40, // Barcode height, in mm
|
|
17
|
+
width: options.width ? parseInt(options.width) : 40, // Barcode width, in mm
|
|
18
|
+
parsefnc: options.parsefnc || true
|
|
19
|
+
});
|
|
20
|
+
res.setHeader('Content-Type', 'image/png');
|
|
21
|
+
res.send(buffer);
|
|
22
|
+
};
|
|
23
|
+
exports.GET = GET;
|
|
24
|
+
const POST = async (req, res) => {
|
|
25
|
+
let options = req.body;
|
|
26
|
+
console.log(options);
|
|
27
|
+
const barcodeService = req.scope.resolve(barcode_1.BARCODE_MODULE);
|
|
28
|
+
// for testing, override options
|
|
29
|
+
let gtin = options.gtin || '00850023754028';
|
|
30
|
+
let serial = options.serial || '20007';
|
|
31
|
+
let text = '(01)' + gtin + '(21)' + serial; // (01)00850023754028(21)20007
|
|
32
|
+
const buffer = await barcodeService.render({
|
|
33
|
+
bcid: options.bcid || 'gs1datamatrix', // Barcode type
|
|
34
|
+
text: options.text || text, // Barcode value
|
|
35
|
+
height: options.height || 40, // Barcode height, in mm
|
|
36
|
+
width: options.width || 40,
|
|
37
|
+
parsefnc: options.parsefnc || true
|
|
38
|
+
});
|
|
39
|
+
res.setHeader('Content-Type', 'image/png');
|
|
40
|
+
res.send(buffer);
|
|
41
|
+
};
|
|
42
|
+
exports.POST = POST;
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2JhcmNvZGUtZ2VuZXJhdG9yL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHNEQUF5RDtBQUdsRCxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3ZCLEdBQXVELEVBQ3ZELEdBQW1CLEVBQ2xCLEVBQUU7SUFDSCxJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFBO0lBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7SUFFcEIsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsd0JBQWMsQ0FBbUIsQ0FBQTtJQUUxRSxnQ0FBZ0M7SUFDaEMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxnQkFBZ0IsQ0FBQTtJQUMzQyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQTtJQUN0QyxJQUFJLElBQUksR0FBRyxNQUFNLEdBQUcsSUFBSSxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUE7SUFFMUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsTUFBTSxDQUFDO1FBQzFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLGVBQWUsRUFBRSxlQUFlO1FBQ3RELElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxnQkFBZ0I7UUFDNUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsd0JBQXdCO1FBQzFGLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsdUJBQXVCO1FBQ3RGLFFBQVEsRUFBRyxPQUFPLENBQUMsUUFBb0IsSUFBSSxJQUFJO0tBQ3hDLENBQUMsQ0FBQTtJQUVULEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQzFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDakIsQ0FBQyxDQUFBO0FBeEJZLFFBQUEsR0FBRyxPQXdCZjtBQUVNLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDeEIsR0FBdUQsRUFDdkQsR0FBbUIsRUFDbEIsRUFBRTtJQUNILElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUE7SUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUVwQixNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyx3QkFBYyxDQUFtQixDQUFBO0lBRTFFLGdDQUFnQztJQUNoQyxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLGdCQUFnQixDQUFBO0lBQzNDLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFBO0lBQ3RDLElBQUksSUFBSSxHQUFHLE1BQU0sR0FBRyxJQUFJLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQSxDQUFDLDhCQUE4QjtJQUV6RSxNQUFNLE1BQU0sR0FBRyxNQUFNLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDMUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksZUFBZSxFQUFFLGVBQWU7UUFDdEQsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFLGdCQUFnQjtRQUM1QyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsd0JBQXdCO1FBQ3RELEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDMUIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLElBQUksSUFBSTtLQUMzQixDQUFDLENBQUE7SUFFVCxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUMxQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQ2pCLENBQUMsQ0FBQTtBQXhCWSxRQUFBLElBQUksUUF3QmhCIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2JhcmNvZGVzL1tpZF0vcmVuZGVyL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { AuthenticatedMedusaRequest, MedusaResponse } from '@medusajs/framework/http';
|
|
2
|
+
import { AdminGetBarcodeType, AdminUpdateBarcodeType } from '../../../validators';
|
|
3
|
+
export declare const GET: (req: AuthenticatedMedusaRequest<AdminGetBarcodeType>, res: MedusaResponse) => Promise<void>;
|
|
4
|
+
export declare const POST: (req: AuthenticatedMedusaRequest<AdminUpdateBarcodeType>, res: MedusaResponse) => Promise<void>;
|
|
5
|
+
export declare const DELETE: (req: AuthenticatedMedusaRequest, res: MedusaResponse) => Promise<void>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DELETE = exports.POST = exports.GET = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const barcode_1 = require("../../../../modules/barcode");
|
|
6
|
+
const GET = async (req, res) => {
|
|
7
|
+
const { id } = req.params;
|
|
8
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
9
|
+
const { data: [barcode] } = await query.graph({
|
|
10
|
+
entity: 'barcode',
|
|
11
|
+
fields: req.queryConfig.fields,
|
|
12
|
+
filters: { id }
|
|
13
|
+
});
|
|
14
|
+
res.json({ barcode });
|
|
15
|
+
};
|
|
16
|
+
exports.GET = GET;
|
|
17
|
+
const POST = async (req, res) => {
|
|
18
|
+
const { id } = req.params;
|
|
19
|
+
const barcodeService = req.scope.resolve(barcode_1.BARCODE_MODULE);
|
|
20
|
+
const barcode = await barcodeService.updateBarcodes({
|
|
21
|
+
id,
|
|
22
|
+
...req.validatedBody
|
|
23
|
+
});
|
|
24
|
+
res.json({ barcode });
|
|
25
|
+
};
|
|
26
|
+
exports.POST = POST;
|
|
27
|
+
const DELETE = async (req, res) => {
|
|
28
|
+
const { id } = req.params;
|
|
29
|
+
const barcodeService = req.scope.resolve(barcode_1.BARCODE_MODULE);
|
|
30
|
+
await barcodeService.deleteBarcodes([id]);
|
|
31
|
+
const link = req.scope.resolve(utils_1.ContainerRegistrationKeys.LINK);
|
|
32
|
+
await link.delete({
|
|
33
|
+
[barcode_1.BARCODE_MODULE]: {
|
|
34
|
+
barcode_id: id
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
res.json({ deleted: id });
|
|
38
|
+
};
|
|
39
|
+
exports.DELETE = DELETE;
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2JhcmNvZGVzL1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQXFFO0FBRXJFLHlEQUE0RDtBQUdyRCxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3ZCLEdBQW9ELEVBQ3BELEdBQW1CLEVBQ2xCLEVBQUU7SUFDSCxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUN6QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRSxNQUFNLEVBQ0wsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQ2YsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDckIsTUFBTSxFQUFFLFNBQVM7UUFDakIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUM5QixPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUU7S0FDZixDQUFDLENBQUE7SUFDRixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtBQUN0QixDQUFDLENBQUE7QUFkWSxRQUFBLEdBQUcsT0FjZjtBQUVNLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDeEIsR0FBdUQsRUFDdkQsR0FBbUIsRUFDbEIsRUFBRTtJQUNILE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBQ3pCLE1BQU0sY0FBYyxHQUFtQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyx3QkFBYyxDQUFDLENBQUE7SUFDeEUsTUFBTSxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUMsY0FBYyxDQUFDO1FBQ25ELEVBQUU7UUFDRixHQUFHLEdBQUcsQ0FBQyxhQUFhO0tBQ3BCLENBQUMsQ0FBQTtJQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0FBQ3RCLENBQUMsQ0FBQTtBQVhZLFFBQUEsSUFBSSxRQVdoQjtBQUVNLE1BQU0sTUFBTSxHQUFHLEtBQUssRUFBRSxHQUErQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNwRixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUN6QixNQUFNLGNBQWMsR0FBbUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsd0JBQWMsQ0FBQyxDQUFBO0lBQ3hFLE1BQU0sY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDekMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDOUQsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2pCLENBQUMsd0JBQWMsQ0FBQyxFQUFFO1lBQ2pCLFVBQVUsRUFBRSxFQUFFO1NBQ2Q7S0FDRCxDQUFDLENBQUE7SUFDRixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDMUIsQ0FBQyxDQUFBO0FBWFksUUFBQSxNQUFNLFVBV2xCIn0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { AuthenticatedMedusaRequest, MedusaResponse } from '@medusajs/framework/http';
|
|
2
|
+
import { AdminCreateBarcodeType, AdminDeleteBarcodesType, AdminGetBarcodesType } from '../../validators';
|
|
3
|
+
export declare const GET: (req: AuthenticatedMedusaRequest<AdminGetBarcodesType>, res: MedusaResponse) => Promise<void>;
|
|
4
|
+
export declare const POST: (req: AuthenticatedMedusaRequest<AdminCreateBarcodeType>, res: MedusaResponse) => Promise<void>;
|
|
5
|
+
export declare const DELETE: (req: AuthenticatedMedusaRequest<AdminDeleteBarcodesType>, res: MedusaResponse) => Promise<void>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DELETE = exports.POST = exports.GET = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const barcode_1 = require("../../../modules/barcode");
|
|
6
|
+
const GET = async (req, res) => {
|
|
7
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
8
|
+
const { data: barcodes, metadata } = await query.graph({
|
|
9
|
+
entity: 'barcode',
|
|
10
|
+
...req.queryConfig
|
|
11
|
+
});
|
|
12
|
+
res.json({
|
|
13
|
+
barcodes,
|
|
14
|
+
count: metadata?.count,
|
|
15
|
+
limit: metadata?.take,
|
|
16
|
+
offset: metadata?.skip
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
exports.GET = GET;
|
|
20
|
+
const POST = async (req, res) => {
|
|
21
|
+
const barcodeService = req.scope.resolve(barcode_1.BARCODE_MODULE);
|
|
22
|
+
const barcode = await barcodeService.createBarcodes(req.validatedBody);
|
|
23
|
+
res.json({ barcode: barcode });
|
|
24
|
+
};
|
|
25
|
+
exports.POST = POST;
|
|
26
|
+
const DELETE = async (req, res) => {
|
|
27
|
+
const { ids } = req.validatedBody;
|
|
28
|
+
const barcodeService = req.scope.resolve(barcode_1.BARCODE_MODULE);
|
|
29
|
+
await barcodeService.deleteBarcodes(ids);
|
|
30
|
+
const link = req.scope.resolve(utils_1.ContainerRegistrationKeys.LINK);
|
|
31
|
+
await link.delete({
|
|
32
|
+
[barcode_1.BARCODE_MODULE]: {
|
|
33
|
+
barcode_id: ids
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
res.json({ deleted: ids });
|
|
37
|
+
};
|
|
38
|
+
exports.DELETE = DELETE;
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2JhcmNvZGVzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUFxRTtBQU1yRSxzREFBeUQ7QUFHbEQsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN2QixHQUFxRCxFQUNyRCxHQUFtQixFQUNsQixFQUFFO0lBQ0gsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3RELE1BQU0sRUFBRSxTQUFTO1FBQ2pCLEdBQUcsR0FBRyxDQUFDLFdBQVc7S0FDbEIsQ0FBQyxDQUFBO0lBQ0YsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNSLFFBQVE7UUFDUixLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUs7UUFDdEIsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJO1FBQ3JCLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSTtLQUN0QixDQUFDLENBQUE7QUFDSCxDQUFDLENBQUE7QUFmWSxRQUFBLEdBQUcsT0FlZjtBQUVNLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDeEIsR0FBdUQsRUFDdkQsR0FBbUIsRUFDbEIsRUFBRTtJQUNILE1BQU0sY0FBYyxHQUFtQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyx3QkFBYyxDQUFDLENBQUE7SUFDeEUsTUFBTSxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUN0RSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7QUFDL0IsQ0FBQyxDQUFBO0FBUFksUUFBQSxJQUFJLFFBT2hCO0FBRU0sTUFBTSxNQUFNLEdBQUcsS0FBSyxFQUMxQixHQUF3RCxFQUN4RCxHQUFtQixFQUNsQixFQUFFO0lBQ0gsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUE7SUFDakMsTUFBTSxjQUFjLEdBQW1CLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHdCQUFjLENBQUMsQ0FBQTtJQUN4RSxNQUFNLGNBQWMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDeEMsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDOUQsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2pCLENBQUMsd0JBQWMsQ0FBQyxFQUFFO1lBQ2pCLFVBQVUsRUFBRSxHQUFHO1NBQ2Y7S0FDRCxDQUFDLENBQUE7SUFDRixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUE7QUFDM0IsQ0FBQyxDQUFBO0FBZFksUUFBQSxNQUFNLFVBY2xCIn0=
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const http_1 = require("@medusajs/framework/http");
|
|
4
|
+
const validators_1 = require("./validators");
|
|
5
|
+
exports.default = (0, http_1.defineMiddlewares)([
|
|
6
|
+
{
|
|
7
|
+
matcher: '/admin/barcodes',
|
|
8
|
+
method: ['GET'],
|
|
9
|
+
middlewares: [
|
|
10
|
+
(0, http_1.validateAndTransformQuery)(validators_1.AdminGetBarcodes, {
|
|
11
|
+
defaults: ['id', 'inventory_item_id', 'code', 'type', 'metadata', 'created_at', 'updated_at'],
|
|
12
|
+
isList: true,
|
|
13
|
+
defaultLimit: 20
|
|
14
|
+
})
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
matcher: '/admin/barcodes',
|
|
19
|
+
method: ['POST'],
|
|
20
|
+
middlewares: [(0, http_1.validateAndTransformBody)(validators_1.AdminCreateBarcode)]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
matcher: '/admin/barcodes',
|
|
24
|
+
method: ['DELETE'],
|
|
25
|
+
middlewares: [(0, http_1.validateAndTransformBody)(validators_1.AdminDeleteBarcodes)]
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
matcher: '/admin/barcodes/:id',
|
|
29
|
+
method: ['GET'],
|
|
30
|
+
middlewares: [
|
|
31
|
+
(0, http_1.validateAndTransformQuery)(validators_1.AdminGetBarcode, {
|
|
32
|
+
defaults: ['id', 'inventory_item_id', 'code', 'type', 'metadata', 'created_at', 'updated_at'],
|
|
33
|
+
isList: false
|
|
34
|
+
})
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
matcher: '/admin/barcodes/:id',
|
|
39
|
+
method: ['POST'],
|
|
40
|
+
middlewares: [(0, http_1.validateAndTransformBody)(validators_1.AdminUpdateBarcode)]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
matcher: '/admin/barcode-generator',
|
|
44
|
+
method: ['GET'],
|
|
45
|
+
middlewares: [(0, http_1.validateAndTransformQuery)(validators_1.AdminRenderBarcode, {})]
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
matcher: '/admin/barcode-generator',
|
|
49
|
+
method: ['POST'],
|
|
50
|
+
middlewares: [(0, http_1.validateAndTransformBody)(validators_1.AdminRenderBarcode)]
|
|
51
|
+
}
|
|
52
|
+
]);
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBQWlIO0FBQ2pILDZDQU9xQjtBQUVyQixrQkFBZSxJQUFBLHdCQUFpQixFQUFDO0lBQ2hDO1FBQ0MsT0FBTyxFQUFFLGlCQUFpQjtRQUMxQixNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDZixXQUFXLEVBQUU7WUFDWixJQUFBLGdDQUF5QixFQUFDLDZCQUFnQixFQUFFO2dCQUMzQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQztnQkFDN0YsTUFBTSxFQUFFLElBQUk7Z0JBQ1osWUFBWSxFQUFFLEVBQUU7YUFDaEIsQ0FBQztTQUNGO0tBQ0Q7SUFDRDtRQUNDLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2hCLFdBQVcsRUFBRSxDQUFDLElBQUEsK0JBQXdCLEVBQUMsK0JBQWtCLENBQUMsQ0FBQztLQUMzRDtJQUNEO1FBQ0MsT0FBTyxFQUFFLGlCQUFpQjtRQUMxQixNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUM7UUFDbEIsV0FBVyxFQUFFLENBQUMsSUFBQSwrQkFBd0IsRUFBQyxnQ0FBbUIsQ0FBQyxDQUFDO0tBQzVEO0lBQ0Q7UUFDQyxPQUFPLEVBQUUscUJBQXFCO1FBQzlCLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNmLFdBQVcsRUFBRTtZQUNaLElBQUEsZ0NBQXlCLEVBQUMsNEJBQWUsRUFBRTtnQkFDMUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUM7Z0JBQzdGLE1BQU0sRUFBRSxLQUFLO2FBQ2IsQ0FBQztTQUNGO0tBQ0Q7SUFDRDtRQUNDLE9BQU8sRUFBRSxxQkFBcUI7UUFDOUIsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2hCLFdBQVcsRUFBRSxDQUFDLElBQUEsK0JBQXdCLEVBQUMsK0JBQWtCLENBQUMsQ0FBQztLQUMzRDtJQUNEO1FBQ0MsT0FBTyxFQUFFLDBCQUEwQjtRQUNuQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDZixXQUFXLEVBQUUsQ0FBQyxJQUFBLGdDQUF5QixFQUFDLCtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQ2hFO0lBQ0Q7UUFDQyxPQUFPLEVBQUUsMEJBQTBCO1FBQ25DLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNoQixXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLCtCQUFrQixDQUFDLENBQUM7S0FDM0Q7Q0FDRCxDQUFDLENBQUEifQ==
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { z } from '@medusajs/framework/zod';
|
|
2
|
+
export declare const AdminGetBarcode: z.ZodObject<{
|
|
3
|
+
fields: z.ZodOptional<z.ZodString>;
|
|
4
|
+
} & {
|
|
5
|
+
offset: z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodNumber>>, number, unknown>;
|
|
6
|
+
limit: z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodNumber>>, number, unknown>;
|
|
7
|
+
order: z.ZodOptional<z.ZodString> | z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
8
|
+
with_deleted: z.ZodEffects<z.ZodOptional<z.ZodBoolean>, boolean | undefined, unknown>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
offset: number;
|
|
11
|
+
limit: number;
|
|
12
|
+
order?: string | undefined;
|
|
13
|
+
fields?: string | undefined;
|
|
14
|
+
with_deleted?: boolean | undefined;
|
|
15
|
+
}, {
|
|
16
|
+
order?: string | undefined;
|
|
17
|
+
fields?: string | undefined;
|
|
18
|
+
offset?: unknown;
|
|
19
|
+
limit?: unknown;
|
|
20
|
+
with_deleted?: unknown;
|
|
21
|
+
}>;
|
|
22
|
+
export type AdminGetBarcodeType = z.infer<typeof AdminGetBarcode>;
|
|
23
|
+
export declare const AdminGetBarcodes: z.ZodObject<{
|
|
24
|
+
fields: z.ZodOptional<z.ZodString>;
|
|
25
|
+
} & {
|
|
26
|
+
offset: z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodNumber>>, number, unknown>;
|
|
27
|
+
limit: z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodNumber>>, number, unknown>;
|
|
28
|
+
order: z.ZodOptional<z.ZodString> | z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
29
|
+
with_deleted: z.ZodEffects<z.ZodOptional<z.ZodBoolean>, boolean | undefined, unknown>;
|
|
30
|
+
} & {
|
|
31
|
+
q: z.ZodOptional<z.ZodString>;
|
|
32
|
+
}, "strip", z.ZodTypeAny, {
|
|
33
|
+
limit: number;
|
|
34
|
+
offset: number;
|
|
35
|
+
q?: string | undefined;
|
|
36
|
+
fields?: string | undefined;
|
|
37
|
+
order?: string | undefined;
|
|
38
|
+
with_deleted?: boolean | undefined;
|
|
39
|
+
}, {
|
|
40
|
+
limit?: unknown;
|
|
41
|
+
offset?: unknown;
|
|
42
|
+
q?: string | undefined;
|
|
43
|
+
fields?: string | undefined;
|
|
44
|
+
order?: string | undefined;
|
|
45
|
+
with_deleted?: unknown;
|
|
46
|
+
}>;
|
|
47
|
+
export type AdminGetBarcodesType = z.infer<typeof AdminGetBarcodes>;
|
|
48
|
+
export declare const AdminCreateBarcode: z.ZodObject<{
|
|
49
|
+
url: z.ZodString;
|
|
50
|
+
metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
51
|
+
}, "strip", z.ZodTypeAny, {
|
|
52
|
+
url: string;
|
|
53
|
+
metadata?: Record<string, unknown> | null | undefined;
|
|
54
|
+
}, {
|
|
55
|
+
url: string;
|
|
56
|
+
metadata?: Record<string, unknown> | null | undefined;
|
|
57
|
+
}>;
|
|
58
|
+
export type AdminCreateBarcodeType = z.infer<typeof AdminCreateBarcode>;
|
|
59
|
+
export declare const AdminDeleteBarcodes: z.ZodObject<{
|
|
60
|
+
ids: z.ZodArray<z.ZodString, "many">;
|
|
61
|
+
}, "strip", z.ZodTypeAny, {
|
|
62
|
+
ids: string[];
|
|
63
|
+
}, {
|
|
64
|
+
ids: string[];
|
|
65
|
+
}>;
|
|
66
|
+
export type AdminDeleteBarcodesType = z.infer<typeof AdminDeleteBarcodes>;
|
|
67
|
+
export declare const AdminUpdateBarcode: z.ZodObject<{
|
|
68
|
+
url: z.ZodOptional<z.ZodString>;
|
|
69
|
+
metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
70
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
71
|
+
url: z.ZodOptional<z.ZodString>;
|
|
72
|
+
metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
73
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
74
|
+
url: z.ZodOptional<z.ZodString>;
|
|
75
|
+
metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
76
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
77
|
+
export type AdminUpdateBarcodeType = z.infer<typeof AdminUpdateBarcode>;
|
|
78
|
+
export declare const AdminRenderBarcode: z.ZodObject<{
|
|
79
|
+
bcid: z.ZodOptional<z.ZodString>;
|
|
80
|
+
text: z.ZodOptional<z.ZodString>;
|
|
81
|
+
gtin: z.ZodOptional<z.ZodString>;
|
|
82
|
+
serial: z.ZodOptional<z.ZodString>;
|
|
83
|
+
height: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
|
|
84
|
+
width: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
|
|
85
|
+
parsefnc: z.ZodEffects<z.ZodOptional<z.ZodBoolean>, boolean | undefined, unknown>;
|
|
86
|
+
}, "strip", z.ZodTypeAny, {
|
|
87
|
+
bcid?: string | undefined;
|
|
88
|
+
text?: string | undefined;
|
|
89
|
+
gtin?: string | undefined;
|
|
90
|
+
serial?: string | undefined;
|
|
91
|
+
height?: number | undefined;
|
|
92
|
+
width?: number | undefined;
|
|
93
|
+
parsefnc?: boolean | undefined;
|
|
94
|
+
}, {
|
|
95
|
+
bcid?: string | undefined;
|
|
96
|
+
text?: string | undefined;
|
|
97
|
+
gtin?: string | undefined;
|
|
98
|
+
serial?: string | undefined;
|
|
99
|
+
height?: unknown;
|
|
100
|
+
width?: unknown;
|
|
101
|
+
parsefnc?: unknown;
|
|
102
|
+
}>;
|
|
103
|
+
export type AdminRenderBarcodeType = z.infer<typeof AdminRenderBarcode>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AdminRenderBarcode = exports.AdminUpdateBarcode = exports.AdminDeleteBarcodes = exports.AdminCreateBarcode = exports.AdminGetBarcodes = exports.AdminGetBarcode = void 0;
|
|
4
|
+
const zod_1 = require("@medusajs/framework/zod");
|
|
5
|
+
const validators_1 = require("@medusajs/medusa/api/utils/validators");
|
|
6
|
+
exports.AdminGetBarcode = (0, validators_1.createFindParams)();
|
|
7
|
+
exports.AdminGetBarcodes = (0, validators_1.createFindParams)({
|
|
8
|
+
limit: 15,
|
|
9
|
+
offset: 0
|
|
10
|
+
}).extend({
|
|
11
|
+
q: zod_1.z.string().optional()
|
|
12
|
+
});
|
|
13
|
+
exports.AdminCreateBarcode = zod_1.z.object({
|
|
14
|
+
url: zod_1.z.string(),
|
|
15
|
+
metadata: zod_1.z.record(zod_1.z.unknown()).nullable().optional()
|
|
16
|
+
});
|
|
17
|
+
exports.AdminDeleteBarcodes = zod_1.z.object({
|
|
18
|
+
ids: zod_1.z.array(zod_1.z.string()).min(1, 'At least one ID is required')
|
|
19
|
+
});
|
|
20
|
+
exports.AdminUpdateBarcode = zod_1.z
|
|
21
|
+
.object({
|
|
22
|
+
url: zod_1.z.string().optional(),
|
|
23
|
+
metadata: zod_1.z.record(zod_1.z.unknown()).nullable().optional()
|
|
24
|
+
})
|
|
25
|
+
.passthrough();
|
|
26
|
+
exports.AdminRenderBarcode = zod_1.z.object({
|
|
27
|
+
bcid: zod_1.z.string().optional(), // Barcode type
|
|
28
|
+
text: zod_1.z.string().optional(), // Barcode value
|
|
29
|
+
gtin: zod_1.z.string().optional(),
|
|
30
|
+
serial: zod_1.z.string().optional(),
|
|
31
|
+
height: zod_1.z.preprocess(val => (val === '' || val == null ? undefined : val), zod_1.z.coerce.number().int().optional()), // Barcode height, in mm
|
|
32
|
+
width: zod_1.z.preprocess(val => {
|
|
33
|
+
return val && typeof val === 'string' ? parseInt(val) : val;
|
|
34
|
+
}, zod_1.z.number().optional()), // Barcode width, in mm
|
|
35
|
+
parsefnc: zod_1.z.preprocess(val => {
|
|
36
|
+
return val && typeof val === 'string' ? Boolean(val) : val;
|
|
37
|
+
}, zod_1.z.boolean().optional()) // Whether to parse the barcode value as a function code (e.g., for GS1 barcodes)
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBMkM7QUFDM0Msc0VBQXdFO0FBRTNELFFBQUEsZUFBZSxHQUFHLElBQUEsNkJBQWdCLEdBQUUsQ0FBQTtBQUdwQyxRQUFBLGdCQUFnQixHQUFHLElBQUEsNkJBQWdCLEVBQUM7SUFDaEQsS0FBSyxFQUFFLEVBQUU7SUFDVCxNQUFNLEVBQUUsQ0FBQztDQUNULENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDVCxDQUFDLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUN4QixDQUFDLENBQUE7QUFHVyxRQUFBLGtCQUFrQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDMUMsR0FBRyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDZixRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDckQsQ0FBQyxDQUFBO0FBR1csUUFBQSxtQkFBbUIsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQzNDLEdBQUcsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsNkJBQTZCLENBQUM7Q0FDOUQsQ0FBQyxDQUFBO0FBR1csUUFBQSxrQkFBa0IsR0FBRyxPQUFDO0tBQ2pDLE1BQU0sQ0FBQztJQUNQLEdBQUcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzFCLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUNyRCxDQUFDO0tBQ0QsV0FBVyxFQUFFLENBQUE7QUFHRixRQUFBLGtCQUFrQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDMUMsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxlQUFlO0lBQzVDLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsZ0JBQWdCO0lBQzdDLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzdCLE1BQU0sRUFBRSxPQUFDLENBQUMsVUFBVSxDQUNuQixHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUNwRCxPQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUNsQyxFQUFFLHdCQUF3QjtJQUMzQixLQUFLLEVBQUUsT0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUN6QixPQUFPLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO0lBQzVELENBQUMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSx1QkFBdUI7SUFDbEQsUUFBUSxFQUFFLE9BQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDNUIsT0FBTyxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtJQUMzRCxDQUFDLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsaUZBQWlGO0NBQzVHLENBQUMsQ0FBQSJ9
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { BarcodeService } from './service';
|
|
2
|
+
export declare const BARCODE_MODULE = "barcode";
|
|
3
|
+
declare const _default: import("@medusajs/types").ModuleExports<typeof BarcodeService> & {
|
|
4
|
+
linkable: {
|
|
5
|
+
readonly barcode: {
|
|
6
|
+
id: {
|
|
7
|
+
serviceName: "barcode";
|
|
8
|
+
field: "barcode";
|
|
9
|
+
linkable: "barcode_id";
|
|
10
|
+
primaryKey: "id";
|
|
11
|
+
};
|
|
12
|
+
toJSON: () => {
|
|
13
|
+
serviceName: "barcode";
|
|
14
|
+
field: "barcode";
|
|
15
|
+
linkable: "barcode_id";
|
|
16
|
+
primaryKey: "id";
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export default _default;
|
|
22
|
+
export * from './service';
|
|
@@ -0,0 +1,25 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.BARCODE_MODULE = void 0;
|
|
18
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
19
|
+
const service_1 = require("./service");
|
|
20
|
+
exports.BARCODE_MODULE = 'barcode';
|
|
21
|
+
exports.default = (0, utils_1.Module)(exports.BARCODE_MODULE, {
|
|
22
|
+
service: service_1.BarcodeService
|
|
23
|
+
});
|
|
24
|
+
__exportStar(require("./service"), exports);
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9iYXJjb2RlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscURBQWtEO0FBQ2xELHVDQUEwQztBQUU3QixRQUFBLGNBQWMsR0FBRyxTQUFTLENBQUE7QUFFdkMsa0JBQWUsSUFBQSxjQUFNLEVBQUMsc0JBQWMsRUFBRTtJQUNyQyxPQUFPLEVBQUUsd0JBQWM7Q0FDdkIsQ0FBQyxDQUFBO0FBRUYsNENBQXlCIn0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20260409171736 = void 0;
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
|
+
class Migration20260409171736 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`create table if not exists "barcode" ("id" text not null, "url" text not null, "metadata" jsonb null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "barcode_pkey" primary key ("id"));`);
|
|
8
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_barcode_deleted_at" ON "barcode" ("deleted_at") WHERE deleted_at IS NULL;`);
|
|
9
|
+
}
|
|
10
|
+
async down() {
|
|
11
|
+
this.addSql(`drop table if exists "barcode" cascade;`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.Migration20260409171736 = Migration20260409171736;
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA0MDkxNzE3MzYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9iYXJjb2RlL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNjA0MDkxNzE3MzYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXFFO0FBRXJFLE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFFM0MsS0FBSyxDQUFDLEVBQUU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLHVSQUF1UixDQUFDLENBQUM7UUFDclMsSUFBSSxDQUFDLE1BQU0sQ0FBQywyR0FBMkcsQ0FBQyxDQUFDO0lBQzNILENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7SUFDekQsQ0FBQztDQUVGO0FBWEQsMERBV0MifQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const Barcode: import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
|
|
2
|
+
id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
|
|
3
|
+
url: import("@medusajs/framework/utils").TextProperty;
|
|
4
|
+
metadata: import("@medusajs/framework/utils").NullableModifier<Record<string, unknown>, import("@medusajs/framework/utils").JSONProperty>;
|
|
5
|
+
}>, "barcode">;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Barcode = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
// store one barcode per inventory item, which can be used for scanning items during fulfillment or receiving
|
|
6
|
+
// learn how to use the file service to attach images of the barcode for scanning in the future
|
|
7
|
+
exports.Barcode = utils_1.model.define('barcode', {
|
|
8
|
+
id: utils_1.model.id().primaryKey(),
|
|
9
|
+
url: utils_1.model.text(),
|
|
10
|
+
metadata: utils_1.model.json().nullable()
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyY29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2JhcmNvZGUvbW9kZWxzL2JhcmNvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWlEO0FBRWpELDZHQUE2RztBQUM3RywrRkFBK0Y7QUFFbEYsUUFBQSxPQUFPLEdBQUcsYUFBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7SUFDOUMsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDM0IsR0FBRyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDakIsUUFBUSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDakMsQ0FBQyxDQUFBIn0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { InferTypeOf } from '@medusajs/framework/types';
|
|
2
|
+
import * as bwipjs from '@bwip-js/node';
|
|
3
|
+
import { Barcode } from './models/barcode';
|
|
4
|
+
export type Barcode = InferTypeOf<typeof Barcode>;
|
|
5
|
+
declare const BarcodeService_base: import("@medusajs/framework/utils").MedusaServiceReturnType<import("@medusajs/framework/utils").ModelConfigurationsToConfigTemplate<{
|
|
6
|
+
readonly Barcode: import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
|
|
7
|
+
id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
|
|
8
|
+
url: import("@medusajs/framework/utils").TextProperty;
|
|
9
|
+
metadata: import("@medusajs/framework/utils").NullableModifier<Record<string, unknown>, import("@medusajs/framework/utils").JSONProperty>;
|
|
10
|
+
}>, "barcode">;
|
|
11
|
+
}>>;
|
|
12
|
+
export declare class BarcodeService extends BarcodeService_base {
|
|
13
|
+
render(options: bwipjs.RenderOptions): Promise<Buffer>;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
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.BarcodeService = void 0;
|
|
37
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
38
|
+
const bwipjs = __importStar(require("@bwip-js/node"));
|
|
39
|
+
const barcode_1 = require("./models/barcode");
|
|
40
|
+
class BarcodeService extends (0, utils_1.MedusaService)({
|
|
41
|
+
Barcode: barcode_1.Barcode
|
|
42
|
+
}) {
|
|
43
|
+
async render(options) {
|
|
44
|
+
// remove undefined options
|
|
45
|
+
Object.keys(options).forEach(key => options[key] === undefined && delete options[key]);
|
|
46
|
+
return await bwipjs.toBuffer(options);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.BarcodeService = BarcodeService;
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2JhcmNvZGUvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxxREFBeUQ7QUFDekQsc0RBQXVDO0FBQ3ZDLDhDQUEwQztBQUkxQyxNQUFhLGNBQWUsU0FBUSxJQUFBLHFCQUFhLEVBQUM7SUFDakQsT0FBTyxFQUFQLGlCQUFPO0NBQ1AsQ0FBQztJQUNELEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBNkI7UUFDekMsMkJBQTJCO1FBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ3RGLE9BQU8sTUFBTSxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3RDLENBQUM7Q0FDRDtBQVJELHdDQVFDIn0=
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Lacey Pevey
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# medusa-plugin-barcodes
|
|
2
|
+
|
|
3
|
+
Barcode generation and management plugin for Medusa v2. Generate and store barcodes for inventory items with GS1 DataMatrix support.
|
|
4
|
+
|
|
5
|
+
[Documentation](https://pevey.com/medusa-plugin-barcodes)
|
|
6
|
+
|
|
7
|
+
If you are not familiar with Medusa, you can learn more on [the project web site](https://www.medusajs.com/).
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- Barcode CRUD with URL and metadata storage
|
|
12
|
+
- On-the-fly barcode image generation (PNG) via admin API
|
|
13
|
+
- GS1 DataMatrix support with GTIN and serial number encoding
|
|
14
|
+
- Configurable barcode type, dimensions, and rendering options
|
|
15
|
+
- Powered by bwip-js for high-quality barcode rendering
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
Inside your medusa backend root folder:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
yarn add medusa-plugin-barcodes
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Replace "yarn add" with the correct command for your package manager if you are using (for example) npm, pnpm, or bun.
|
|
26
|
+
|
|
27
|
+
## Configuration
|
|
28
|
+
|
|
29
|
+
Enable in your `medusa-config.ts` file. Example:
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
module.exports = defineConfig({
|
|
33
|
+
//... other config
|
|
34
|
+
plugins: [
|
|
35
|
+
{
|
|
36
|
+
resolve: 'medusa-plugin-barcodes',
|
|
37
|
+
options: {}
|
|
38
|
+
}
|
|
39
|
+
// ... other plugins
|
|
40
|
+
]
|
|
41
|
+
})
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Usage
|
|
45
|
+
|
|
46
|
+
- Manage barcodes via the admin API at `/admin/barcodes`.
|
|
47
|
+
- Generate barcode images via `GET /admin/barcode-generator` with query parameters.
|
|
48
|
+
- Supported parameters: `bcid` (barcode type), `text`, `gtin`, `serial`, `height`, `width`.
|
package/package.json
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "medusa-plugin-barcodes",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Barcode generation and management plugin for Medusa v2",
|
|
5
|
+
"author": "Lacey Pevey",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/pevey/medusa-plugins"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://pevey.com/medusa-plugin-barcodes",
|
|
12
|
+
"files": [
|
|
13
|
+
".medusa/server"
|
|
14
|
+
],
|
|
15
|
+
"exports": {
|
|
16
|
+
"./package.json": "./package.json",
|
|
17
|
+
"./.medusa/server/src/modules/*": {
|
|
18
|
+
"types": "./.medusa/server/src/modules/*/index.d.ts",
|
|
19
|
+
"default": "./.medusa/server/src/modules/*/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./modules/*": {
|
|
22
|
+
"types": "./.medusa/server/src/modules/*/index.d.ts",
|
|
23
|
+
"default": "./.medusa/server/src/modules/*/index.js"
|
|
24
|
+
},
|
|
25
|
+
"./providers/*": {
|
|
26
|
+
"types": "./.medusa/server/src/providers/*/index.d.ts",
|
|
27
|
+
"default": "./.medusa/server/src/providers/*/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./*": {
|
|
30
|
+
"types": "./.medusa/server/src/*.d.ts",
|
|
31
|
+
"default": "./.medusa/server/src/*.js"
|
|
32
|
+
},
|
|
33
|
+
".": {
|
|
34
|
+
"types": "./.medusa/server/src/modules/barcode/index.d.ts",
|
|
35
|
+
"default": "./.medusa/server/src/modules/barcode/index.js"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"keywords": [
|
|
39
|
+
"medusa-v2",
|
|
40
|
+
"medusa",
|
|
41
|
+
"barcodes",
|
|
42
|
+
"barcode generator",
|
|
43
|
+
"inventory",
|
|
44
|
+
"GS1"
|
|
45
|
+
],
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@bwip-js/node": "^4.5.1"
|
|
48
|
+
},
|
|
49
|
+
"scripts": {
|
|
50
|
+
"build": "medusa plugin:build",
|
|
51
|
+
"clean:snapshots": "find . -name '.snapshot-*.json' -path '*/migrations/*' -delete",
|
|
52
|
+
"dev": "medusa plugin:develop",
|
|
53
|
+
"prepublishOnly": "medusa plugin:build",
|
|
54
|
+
"test:unit": "TEST_TYPE=unit NODE_OPTIONS=--experimental-vm-modules jest --silent --runInBand --detectOpenHandles --forceExit --passWithNoTests",
|
|
55
|
+
"test:integration:http": "TEST_TYPE=integration:http NODE_OPTIONS=--experimental-vm-modules jest --silent=false --runInBand --detectOpenHandles --forceExit"
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"@medusajs/admin-sdk": "2.13.6",
|
|
59
|
+
"@medusajs/cli": "2.13.6",
|
|
60
|
+
"@medusajs/framework": "2.13.6",
|
|
61
|
+
"@medusajs/icons": "2.13.6",
|
|
62
|
+
"@medusajs/ui": "4.0.25",
|
|
63
|
+
"@swc/core": "^1.7.28",
|
|
64
|
+
"@swc/jest": "^0.2.39",
|
|
65
|
+
"@types/jest": "^30.0.0",
|
|
66
|
+
"@types/node": "^20.0.0",
|
|
67
|
+
"@types/react": "^18.3.2",
|
|
68
|
+
"@types/react-dom": "^18.2.25",
|
|
69
|
+
"jest": "^29.7.0",
|
|
70
|
+
"prop-types": "^15.8.1",
|
|
71
|
+
"react": "^18.2.0",
|
|
72
|
+
"react-dom": "^18.2.0",
|
|
73
|
+
"ts-node": "^10.9.2",
|
|
74
|
+
"typescript": "^5.6.2",
|
|
75
|
+
"vite": "^5.2.11",
|
|
76
|
+
"yalc": "^1.0.0-pre.53"
|
|
77
|
+
},
|
|
78
|
+
"peerDependencies": {
|
|
79
|
+
"@medusajs/framework": "2.13.6",
|
|
80
|
+
"@medusajs/js-sdk": "2.13.6",
|
|
81
|
+
"@medusajs/medusa": "2.13.6"
|
|
82
|
+
},
|
|
83
|
+
"engines": {
|
|
84
|
+
"node": ">=20"
|
|
85
|
+
}
|
|
86
|
+
}
|