@qr-styled/node 1.0.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.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +691 -0
  3. package/dist/cli/index.d.ts +29 -0
  4. package/dist/cli/index.d.ts.map +1 -0
  5. package/dist/cli/index.js +126 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/index.d.ts +15 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +14 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/lib/QRGenerator.d.ts +53 -0
  12. package/dist/lib/QRGenerator.d.ts.map +1 -0
  13. package/dist/lib/QRGenerator.js +150 -0
  14. package/dist/lib/QRGenerator.js.map +1 -0
  15. package/dist/lib/QRGenerator.new-features.test.d.ts +2 -0
  16. package/dist/lib/QRGenerator.new-features.test.d.ts.map +1 -0
  17. package/dist/lib/QRGenerator.new-features.test.js +235 -0
  18. package/dist/lib/QRGenerator.new-features.test.js.map +1 -0
  19. package/dist/lib/QRGenerator.test.d.ts +2 -0
  20. package/dist/lib/QRGenerator.test.d.ts.map +1 -0
  21. package/dist/lib/QRGenerator.test.js +39 -0
  22. package/dist/lib/QRGenerator.test.js.map +1 -0
  23. package/dist/lib/renderers/BackgroundRenderer.d.ts +23 -0
  24. package/dist/lib/renderers/BackgroundRenderer.d.ts.map +1 -0
  25. package/dist/lib/renderers/BackgroundRenderer.js +48 -0
  26. package/dist/lib/renderers/BackgroundRenderer.js.map +1 -0
  27. package/dist/lib/renderers/GradientRenderer.d.ts +19 -0
  28. package/dist/lib/renderers/GradientRenderer.d.ts.map +1 -0
  29. package/dist/lib/renderers/GradientRenderer.js +44 -0
  30. package/dist/lib/renderers/GradientRenderer.js.map +1 -0
  31. package/dist/lib/renderers/LogoRenderer.d.ts +23 -0
  32. package/dist/lib/renderers/LogoRenderer.d.ts.map +1 -0
  33. package/dist/lib/renderers/LogoRenderer.js +72 -0
  34. package/dist/lib/renderers/LogoRenderer.js.map +1 -0
  35. package/dist/lib/renderers/ModuleRenderer.d.ts +45 -0
  36. package/dist/lib/renderers/ModuleRenderer.d.ts.map +1 -0
  37. package/dist/lib/renderers/ModuleRenderer.js +162 -0
  38. package/dist/lib/renderers/ModuleRenderer.js.map +1 -0
  39. package/dist/lib/renderers/SVGRenderer.d.ts +23 -0
  40. package/dist/lib/renderers/SVGRenderer.d.ts.map +1 -0
  41. package/dist/lib/renderers/SVGRenderer.js +74 -0
  42. package/dist/lib/renderers/SVGRenderer.js.map +1 -0
  43. package/dist/lib/utils/formatters.d.ts +26 -0
  44. package/dist/lib/utils/formatters.d.ts.map +1 -0
  45. package/dist/lib/utils/formatters.js +107 -0
  46. package/dist/lib/utils/formatters.js.map +1 -0
  47. package/dist/lib/utils/formatters.test.d.ts +2 -0
  48. package/dist/lib/utils/formatters.test.d.ts.map +1 -0
  49. package/dist/lib/utils/formatters.test.js +190 -0
  50. package/dist/lib/utils/formatters.test.js.map +1 -0
  51. package/dist/lib/utils/types.d.ts +120 -0
  52. package/dist/lib/utils/types.d.ts.map +1 -0
  53. package/dist/lib/utils/types.js +35 -0
  54. package/dist/lib/utils/types.js.map +1 -0
  55. package/dist/lib/utils/validators.d.ts +11 -0
  56. package/dist/lib/utils/validators.d.ts.map +1 -0
  57. package/dist/lib/utils/validators.js +127 -0
  58. package/dist/lib/utils/validators.js.map +1 -0
  59. package/dist/lib/utils/validators.test.d.ts +2 -0
  60. package/dist/lib/utils/validators.test.d.ts.map +1 -0
  61. package/dist/lib/utils/validators.test.js +62 -0
  62. package/dist/lib/utils/validators.test.js.map +1 -0
  63. package/package.json +87 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QRGenerator.new-features.test.js","sourceRoot":"","sources":["../../src/lib/QRGenerator.new-features.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=QRGenerator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QRGenerator.test.d.ts","sourceRoot":"","sources":["../../src/lib/QRGenerator.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,39 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { QRGenerator } from './QRGenerator.js';
3
+ import path from 'path';
4
+ describe('QRGenerator - Essential Tests', () => {
5
+ const testOutputDir = path.join(process.cwd(), 'test-output');
6
+ it('should create an instance with valid options', () => {
7
+ const options = {
8
+ url: 'https://example.com'
9
+ };
10
+ const generator = new QRGenerator(options);
11
+ expect(generator).toBeInstanceOf(QRGenerator);
12
+ });
13
+ it('should generate QR code to buffer', async () => {
14
+ const options = {
15
+ url: 'https://example.com'
16
+ };
17
+ const generator = new QRGenerator(options);
18
+ const buffer = await generator.generateToBuffer();
19
+ expect(buffer).toBeInstanceOf(Buffer);
20
+ expect(buffer.length).toBeGreaterThan(0);
21
+ });
22
+ it('should generate QR code to data URL', async () => {
23
+ const options = {
24
+ url: 'https://example.com'
25
+ };
26
+ const generator = new QRGenerator(options);
27
+ const dataURL = await generator.generateToDataURL();
28
+ expect(dataURL).toMatch(/^data:image\/png;base64,/);
29
+ expect(dataURL.length).toBeGreaterThan(100);
30
+ });
31
+ it('should throw error with invalid options', () => {
32
+ const options = {
33
+ url: 'https://example.com',
34
+ size: 50 // Too small
35
+ };
36
+ expect(() => new QRGenerator(options)).toThrow();
37
+ });
38
+ });
39
+ //# sourceMappingURL=QRGenerator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QRGenerator.test.js","sourceRoot":"","sources":["../../src/lib/QRGenerator.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;IAE9D,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,OAAO,GAAc;YACzB,GAAG,EAAE,qBAAqB;SAC3B,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,OAAO,GAAc;YACzB,GAAG,EAAE,qBAAqB;SAC3B,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAElD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,OAAO,GAAc;YACzB,GAAG,EAAE,qBAAqB;SAC3B,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAEpD,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACpD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,OAAO,GAAc;YACzB,GAAG,EAAE,qBAAqB;YAC1B,IAAI,EAAE,EAAE,CAAC,YAAY;SACtB,CAAC;QAEF,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { QROptions } from '../utils/types.js';
2
+ import type { CanvasRenderingContext2D } from 'canvas';
3
+ /**
4
+ * Handles background rendering for QR codes
5
+ */
6
+ export declare class BackgroundRenderer {
7
+ private ctx;
8
+ private options;
9
+ constructor(ctx: CanvasRenderingContext2D, options: Required<QROptions>);
10
+ /**
11
+ * Renders background with rounded corners
12
+ */
13
+ render(): void;
14
+ /**
15
+ * Applies clipping path for rounded corners
16
+ */
17
+ applyClipping(): void;
18
+ /**
19
+ * Restores canvas context after clipping
20
+ */
21
+ restoreClipping(): void;
22
+ }
23
+ //# sourceMappingURL=BackgroundRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackgroundRenderer.d.ts","sourceRoot":"","sources":["../../../src/lib/renderers/BackgroundRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAEvD;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,GAAG,CAA2B;IACtC,OAAO,CAAC,OAAO,CAAsB;gBAEzB,GAAG,EAAE,wBAAwB,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC;IAKvE;;OAEG;IACH,MAAM,IAAI,IAAI;IAed;;OAEG;IACH,aAAa,IAAI,IAAI;IAerB;;OAEG;IACH,eAAe,IAAI,IAAI;CAGxB"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Handles background rendering for QR codes
3
+ */
4
+ export class BackgroundRenderer {
5
+ constructor(ctx, options) {
6
+ this.ctx = ctx;
7
+ this.options = options;
8
+ }
9
+ /**
10
+ * Renders background with rounded corners
11
+ */
12
+ render() {
13
+ const { size, cornerRadius, backgroundColor } = this.options;
14
+ const ctx = this.ctx;
15
+ ctx.fillStyle = backgroundColor;
16
+ ctx.beginPath();
17
+ ctx.moveTo(cornerRadius, 0);
18
+ ctx.arcTo(size, 0, size, size, cornerRadius);
19
+ ctx.arcTo(size, size, 0, size, cornerRadius);
20
+ ctx.arcTo(0, size, 0, 0, cornerRadius);
21
+ ctx.arcTo(0, 0, size, 0, cornerRadius);
22
+ ctx.closePath();
23
+ ctx.fill();
24
+ }
25
+ /**
26
+ * Applies clipping path for rounded corners
27
+ */
28
+ applyClipping() {
29
+ const { size, cornerRadius } = this.options;
30
+ const ctx = this.ctx;
31
+ ctx.save();
32
+ ctx.beginPath();
33
+ ctx.moveTo(cornerRadius, 0);
34
+ ctx.arcTo(size, 0, size, size, cornerRadius);
35
+ ctx.arcTo(size, size, 0, size, cornerRadius);
36
+ ctx.arcTo(0, size, 0, 0, cornerRadius);
37
+ ctx.arcTo(0, 0, size, 0, cornerRadius);
38
+ ctx.closePath();
39
+ ctx.clip();
40
+ }
41
+ /**
42
+ * Restores canvas context after clipping
43
+ */
44
+ restoreClipping() {
45
+ this.ctx.restore();
46
+ }
47
+ }
48
+ //# sourceMappingURL=BackgroundRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackgroundRenderer.js","sourceRoot":"","sources":["../../../src/lib/renderers/BackgroundRenderer.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAI7B,YAAY,GAA6B,EAAE,OAA4B;QACrE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAErB,GAAG,CAAC,SAAS,GAAG,eAAe,CAAC;QAChC,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC5B,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAC7C,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAC7C,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QACvC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QACvC,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED;;OAEG;IACH,aAAa;QACX,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAErB,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC5B,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAC7C,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAC7C,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QACvC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QACvC,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,EAAE,CAAC;IACb,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import { QROptions } from '../utils/types.js';
2
+ import type { CanvasRenderingContext2D, CanvasGradient } from 'canvas';
3
+ /**
4
+ * Handles gradient creation for QR codes
5
+ */
6
+ export declare class GradientRenderer {
7
+ private ctx;
8
+ private options;
9
+ constructor(ctx: CanvasRenderingContext2D, options: Required<QROptions>);
10
+ /**
11
+ * Creates a gradient fill style
12
+ */
13
+ createGradient(): CanvasGradient;
14
+ /**
15
+ * Gets the appropriate fill style (gradient or solid color)
16
+ */
17
+ getFillStyle(): string | CanvasGradient;
18
+ }
19
+ //# sourceMappingURL=GradientRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GradientRenderer.d.ts","sourceRoot":"","sources":["../../../src/lib/renderers/GradientRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAEvE;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,GAAG,CAA2B;IACtC,OAAO,CAAC,OAAO,CAAsB;gBAEzB,GAAG,EAAE,wBAAwB,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC;IAKvE;;OAEG;IACH,cAAc,IAAI,cAAc;IAgChC;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,cAAc;CAIxC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Handles gradient creation for QR codes
3
+ */
4
+ export class GradientRenderer {
5
+ constructor(ctx, options) {
6
+ this.ctx = ctx;
7
+ this.options = options;
8
+ }
9
+ /**
10
+ * Creates a gradient fill style
11
+ */
12
+ createGradient() {
13
+ const { size, gradientColors, gradientAngle } = this.options;
14
+ const ctx = this.ctx;
15
+ // Parse gradient colors
16
+ const colors = gradientColors.split(',').map(c => c.trim());
17
+ // Calculate angle in radians
18
+ const angleRad = (gradientAngle * Math.PI) / 180;
19
+ // Calculate gradient start and end points
20
+ const centerX = size / 2;
21
+ const centerY = size / 2;
22
+ const length = Math.sqrt(size * size + size * size) / 2;
23
+ const x0 = centerX - Math.cos(angleRad) * length;
24
+ const y0 = centerY - Math.sin(angleRad) * length;
25
+ const x1 = centerX + Math.cos(angleRad) * length;
26
+ const y1 = centerY + Math.sin(angleRad) * length;
27
+ // Create linear gradient
28
+ const gradient = ctx.createLinearGradient(x0, y0, x1, y1);
29
+ // Add color stops uniformly distributed
30
+ colors.forEach((color, index) => {
31
+ const stop = index / (colors.length - 1);
32
+ gradient.addColorStop(stop, color);
33
+ });
34
+ return gradient;
35
+ }
36
+ /**
37
+ * Gets the appropriate fill style (gradient or solid color)
38
+ */
39
+ getFillStyle() {
40
+ const { gradient, foregroundColor } = this.options;
41
+ return gradient ? this.createGradient() : foregroundColor;
42
+ }
43
+ }
44
+ //# sourceMappingURL=GradientRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GradientRenderer.js","sourceRoot":"","sources":["../../../src/lib/renderers/GradientRenderer.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAI3B,YAAY,GAA6B,EAAE,OAA4B;QACrE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAErB,wBAAwB;QACxB,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAE5D,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAEjD,0CAA0C;QAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAExD,MAAM,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QACjD,MAAM,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QACjD,MAAM,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QACjD,MAAM,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QAEjD,yBAAyB;QACzB,MAAM,QAAQ,GAAG,GAAG,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAE1D,wCAAwC;QACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACzC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,YAAY;QACV,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACnD,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;IAC5D,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ import type { CanvasRenderingContext2D } from 'canvas';
2
+ import { QROptions } from '../utils/types.js';
3
+ /**
4
+ * Handles logo rendering on QR codes
5
+ */
6
+ export declare class LogoRenderer {
7
+ private ctx;
8
+ private options;
9
+ constructor(ctx: CanvasRenderingContext2D, options: Required<QROptions>);
10
+ /**
11
+ * Renders logo with background
12
+ */
13
+ render(logoPath: string): Promise<void>;
14
+ /**
15
+ * Draws logo background (circle or rounded square)
16
+ */
17
+ private drawLogoBackground;
18
+ /**
19
+ * Draws logo with shadow effect
20
+ */
21
+ private drawLogoWithShadow;
22
+ }
23
+ //# sourceMappingURL=LogoRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogoRenderer.d.ts","sourceRoot":"","sources":["../../../src/lib/renderers/LogoRenderer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAA2B;IACtC,OAAO,CAAC,OAAO,CAAsB;gBAEzB,GAAG,EAAE,wBAAwB,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC;IAKvE;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB7C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0C1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAuB3B"}
@@ -0,0 +1,72 @@
1
+ import { loadImage } from 'canvas';
2
+ /**
3
+ * Handles logo rendering on QR codes
4
+ */
5
+ export class LogoRenderer {
6
+ constructor(ctx, options) {
7
+ this.ctx = ctx;
8
+ this.options = options;
9
+ }
10
+ /**
11
+ * Renders logo with background
12
+ */
13
+ async render(logoPath) {
14
+ if (!logoPath)
15
+ return;
16
+ const img = await loadImage(logoPath);
17
+ const { size, logoPadding } = this.options;
18
+ const logoSize = size * 0.25;
19
+ const bgSize = logoSize + logoPadding;
20
+ const centerX = size / 2;
21
+ const centerY = size / 2;
22
+ // Draw logo background
23
+ this.drawLogoBackground(centerX, centerY, bgSize);
24
+ // Draw logo with shadow
25
+ this.drawLogoWithShadow(img, centerX, centerY, logoSize);
26
+ }
27
+ /**
28
+ * Draws logo background (circle or rounded square)
29
+ */
30
+ drawLogoBackground(centerX, centerY, bgSize) {
31
+ const { logoShape, logoRadius, backgroundColor } = this.options;
32
+ const ctx = this.ctx;
33
+ ctx.fillStyle = backgroundColor;
34
+ if (logoShape === 'circle') {
35
+ ctx.beginPath();
36
+ ctx.arc(centerX, centerY, bgSize / 2, 0, Math.PI * 2);
37
+ ctx.fill();
38
+ }
39
+ else {
40
+ // Rounded square
41
+ const squareX = centerX - bgSize / 2;
42
+ const squareY = centerY - bgSize / 2;
43
+ ctx.beginPath();
44
+ ctx.moveTo(squareX + logoRadius, squareY);
45
+ ctx.arcTo(squareX + bgSize, squareY, squareX + bgSize, squareY + bgSize, logoRadius);
46
+ ctx.arcTo(squareX + bgSize, squareY + bgSize, squareX, squareY + bgSize, logoRadius);
47
+ ctx.arcTo(squareX, squareY + bgSize, squareX, squareY, logoRadius);
48
+ ctx.arcTo(squareX, squareY, squareX + bgSize, squareY, logoRadius);
49
+ ctx.closePath();
50
+ ctx.fill();
51
+ }
52
+ }
53
+ /**
54
+ * Draws logo with shadow effect
55
+ */
56
+ drawLogoWithShadow(img, centerX, centerY, logoSize) {
57
+ const ctx = this.ctx;
58
+ // Apply shadow
59
+ ctx.shadowColor = 'rgba(0, 0, 0, 0.15)';
60
+ ctx.shadowBlur = 12;
61
+ ctx.shadowOffsetX = 0;
62
+ ctx.shadowOffsetY = 2;
63
+ // Draw logo
64
+ const logoX = centerX - logoSize / 2;
65
+ const logoY = centerY - logoSize / 2;
66
+ ctx.drawImage(img, logoX, logoY, logoSize, logoSize);
67
+ // Reset shadow
68
+ ctx.shadowColor = 'transparent';
69
+ ctx.shadowBlur = 0;
70
+ }
71
+ }
72
+ //# sourceMappingURL=LogoRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogoRenderer.js","sourceRoot":"","sources":["../../../src/lib/renderers/LogoRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { QROptions } from '../utils/types.js';
2
+ import type { CanvasRenderingContext2D, CanvasGradient } from 'canvas';
3
+ interface QRModules {
4
+ size: number;
5
+ get(row: number, col: number): number;
6
+ }
7
+ interface RenderOptions extends Required<QROptions> {
8
+ moduleCount: number;
9
+ moduleSize: number;
10
+ }
11
+ /**
12
+ * Handles QR module rendering with rounded corners
13
+ */
14
+ export declare class ModuleRenderer {
15
+ private ctx;
16
+ private modules;
17
+ private options;
18
+ constructor(ctx: CanvasRenderingContext2D, modules: QRModules, options: RenderOptions);
19
+ /**
20
+ * Checks if a module exists at given position
21
+ */
22
+ private hasModule;
23
+ /**
24
+ * Checks if position is part of finder pattern (eye)
25
+ */
26
+ private isPartOfEye;
27
+ /**
28
+ * Renders all QR modules
29
+ */
30
+ render(fillStyle: string | CanvasGradient): void;
31
+ /**
32
+ * Renders modules with rounded corners
33
+ */
34
+ private renderRoundedModules;
35
+ /**
36
+ * Draws a single module with selectively rounded corners
37
+ */
38
+ private drawRoundedModule;
39
+ /**
40
+ * Renders simple square modules
41
+ */
42
+ private renderSquareModules;
43
+ }
44
+ export {};
45
+ //# sourceMappingURL=ModuleRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModuleRenderer.d.ts","sourceRoot":"","sources":["../../../src/lib/renderers/ModuleRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAEvE,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvC;AAED,UAAU,aAAc,SAAQ,QAAQ,CAAC,SAAS,CAAC;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAgBD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAA2B;IACtC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,OAAO,CAAgB;gBAG7B,GAAG,EAAE,wBAAwB,EAC7B,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,aAAa;IAOxB;;OAEG;IACH,OAAO,CAAC,SAAS;IAQjB;;OAEG;IACH,OAAO,CAAC,WAAW;IAWnB;;OAEG;IACH,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAWhD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+D5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6EzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAoB5B"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Handles QR module rendering with rounded corners
3
+ */
4
+ export class ModuleRenderer {
5
+ constructor(ctx, modules, options) {
6
+ this.ctx = ctx;
7
+ this.modules = modules;
8
+ this.options = options;
9
+ }
10
+ /**
11
+ * Checks if a module exists at given position
12
+ */
13
+ hasModule(row, col) {
14
+ const { moduleCount } = this.options;
15
+ if (row < 0 || row >= moduleCount || col < 0 || col >= moduleCount) {
16
+ return false;
17
+ }
18
+ return this.modules.get(row, col) === 1;
19
+ }
20
+ /**
21
+ * Checks if position is part of finder pattern (eye)
22
+ */
23
+ isPartOfEye(row, col) {
24
+ const { moduleCount } = this.options;
25
+ // Top-left eye
26
+ if (row < 7 && col < 7)
27
+ return true;
28
+ // Top-right eye
29
+ if (row < 7 && col >= moduleCount - 7)
30
+ return true;
31
+ // Bottom-left eye
32
+ if (row >= moduleCount - 7 && col < 7)
33
+ return true;
34
+ return false;
35
+ }
36
+ /**
37
+ * Renders all QR modules
38
+ */
39
+ render(fillStyle) {
40
+ const { rounded } = this.options;
41
+ this.ctx.fillStyle = fillStyle;
42
+ if (rounded) {
43
+ this.renderRoundedModules();
44
+ }
45
+ else {
46
+ this.renderSquareModules();
47
+ }
48
+ }
49
+ /**
50
+ * Renders modules with rounded corners
51
+ */
52
+ renderRoundedModules() {
53
+ const { moduleCount, moduleSize, padding, moduleRadius, eyeColor, eyeRadius } = this.options;
54
+ const ctx = this.ctx;
55
+ for (let row = 0; row < moduleCount; row++) {
56
+ for (let col = 0; col < moduleCount; col++) {
57
+ if (this.modules.get(row, col)) {
58
+ const x = padding + col * moduleSize;
59
+ const y = padding + row * moduleSize;
60
+ // Determine if this is part of an eye (finder pattern)
61
+ const isEye = this.isPartOfEye(row, col);
62
+ // Use eye-specific color if available
63
+ if (isEye && eyeColor) {
64
+ ctx.fillStyle = eyeColor;
65
+ }
66
+ // Use eye-specific radius if available, otherwise use moduleRadius
67
+ const cornerRadius = isEye && eyeRadius !== undefined && eyeRadius > 0
68
+ ? moduleSize * eyeRadius
69
+ : moduleSize * moduleRadius;
70
+ // Check adjacent modules
71
+ const top = this.hasModule(row - 1, col);
72
+ const right = this.hasModule(row, col + 1);
73
+ const bottom = this.hasModule(row + 1, col);
74
+ const left = this.hasModule(row, col - 1);
75
+ // Determine which corners to round
76
+ const roundTL = !top && !left;
77
+ const roundTR = !top && !right;
78
+ const roundBR = !bottom && !right;
79
+ const roundBL = !bottom && !left;
80
+ // Small extension to eliminate gaps
81
+ const gap = 0.5;
82
+ const extendTop = top ? gap : 0;
83
+ const extendRight = right ? gap : 0;
84
+ const extendBottom = bottom ? gap : 0;
85
+ const extendLeft = left ? gap : 0;
86
+ this.drawRoundedModule(x, y, moduleSize, cornerRadius, { roundTL, roundTR, roundBR, roundBL }, { extendTop, extendRight, extendBottom, extendLeft });
87
+ }
88
+ }
89
+ }
90
+ }
91
+ /**
92
+ * Draws a single module with selectively rounded corners
93
+ */
94
+ drawRoundedModule(x, y, size, radius, corners, extensions) {
95
+ const ctx = this.ctx;
96
+ const { roundTL, roundTR, roundBR, roundBL } = corners;
97
+ const { extendTop, extendRight, extendBottom, extendLeft } = extensions;
98
+ ctx.beginPath();
99
+ // Top-left corner
100
+ if (roundTL) {
101
+ ctx.moveTo(x + radius - extendLeft, y - extendTop);
102
+ }
103
+ else {
104
+ ctx.moveTo(x - extendLeft, y - extendTop);
105
+ }
106
+ // Top side and top-right corner
107
+ if (roundTR) {
108
+ ctx.lineTo(x + size - radius + extendRight, y - extendTop);
109
+ ctx.quadraticCurveTo(x + size + extendRight, y - extendTop, x + size + extendRight, y + radius - extendTop);
110
+ }
111
+ else {
112
+ ctx.lineTo(x + size + extendRight, y - extendTop);
113
+ }
114
+ // Right side and bottom-right corner
115
+ if (roundBR) {
116
+ ctx.lineTo(x + size + extendRight, y + size - radius + extendBottom);
117
+ ctx.quadraticCurveTo(x + size + extendRight, y + size + extendBottom, x + size - radius + extendRight, y + size + extendBottom);
118
+ }
119
+ else {
120
+ ctx.lineTo(x + size + extendRight, y + size + extendBottom);
121
+ }
122
+ // Bottom side and bottom-left corner
123
+ if (roundBL) {
124
+ ctx.lineTo(x + radius - extendLeft, y + size + extendBottom);
125
+ ctx.quadraticCurveTo(x - extendLeft, y + size + extendBottom, x - extendLeft, y + size - radius + extendBottom);
126
+ }
127
+ else {
128
+ ctx.lineTo(x - extendLeft, y + size + extendBottom);
129
+ }
130
+ // Left side and close path
131
+ if (roundTL) {
132
+ ctx.lineTo(x - extendLeft, y + radius - extendTop);
133
+ ctx.quadraticCurveTo(x - extendLeft, y - extendTop, x + radius - extendLeft, y - extendTop);
134
+ }
135
+ else {
136
+ ctx.lineTo(x - extendLeft, y - extendTop);
137
+ }
138
+ ctx.closePath();
139
+ ctx.fill();
140
+ }
141
+ /**
142
+ * Renders simple square modules
143
+ */
144
+ renderSquareModules() {
145
+ const { moduleCount, moduleSize, padding, eyeColor } = this.options;
146
+ const ctx = this.ctx;
147
+ for (let row = 0; row < moduleCount; row++) {
148
+ for (let col = 0; col < moduleCount; col++) {
149
+ if (this.modules.get(row, col)) {
150
+ const x = padding + col * moduleSize;
151
+ const y = padding + row * moduleSize;
152
+ // Use eye-specific color if this is part of an eye
153
+ if (this.isPartOfEye(row, col) && eyeColor) {
154
+ ctx.fillStyle = eyeColor;
155
+ }
156
+ ctx.fillRect(x, y, moduleSize, moduleSize);
157
+ }
158
+ }
159
+ }
160
+ }
161
+ }
162
+ //# sourceMappingURL=ModuleRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModuleRenderer.js","sourceRoot":"","sources":["../../../src/lib/renderers/ModuleRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { QROptions } from '../utils/types.js';
2
+ /**
3
+ * Renderer for SVG output
4
+ */
5
+ export declare class SVGRenderer {
6
+ private options;
7
+ private qrData;
8
+ private size;
9
+ constructor(qrData: any, options: Required<QROptions>, size: number);
10
+ /**
11
+ * Generates SVG string
12
+ */
13
+ generate(): string;
14
+ /**
15
+ * Checks if module exists at position
16
+ */
17
+ private hasModule;
18
+ /**
19
+ * Checks if position is part of finder pattern (eye)
20
+ */
21
+ private isPartOfEye;
22
+ }
23
+ //# sourceMappingURL=SVGRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SVGRenderer.d.ts","sourceRoot":"","sources":["../../../src/lib/renderers/SVGRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,IAAI,CAAS;gBAET,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM;IAMnE;;OAEG;IACH,QAAQ,IAAI,MAAM;IAmDlB;;OAEG;IACH,OAAO,CAAC,SAAS;IAQjB;;OAEG;IACH,OAAO,CAAC,WAAW;CASpB"}