@hellkite/pipkin 0.5.2 → 0.6.1

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.
@@ -16,6 +16,7 @@ export type LayerFnContext = {
16
16
  export type LayerFn<EntryType> = (entry: EntryType, context: LayerFnContext) => Promise<ImageType | undefined>;
17
17
  export type TemplateLayerFn<EntryType extends Record<string, string>> = (template: Template<EntryType>) => Template<EntryType>;
18
18
  export declare class Template<EntryType extends Record<string, string>> {
19
+ private readonly fonts;
19
20
  private readonly layers;
20
21
  private readonly background;
21
22
  private debugMode;
@@ -51,7 +51,6 @@ const papaparse_1 = require("papaparse");
51
51
  const jimp_1 = require("jimp");
52
52
  const lodash_camelcase_1 = __importDefault(require("lodash.camelcase"));
53
53
  const lodash_concat_1 = __importDefault(require("lodash.concat"));
54
- const canvas_1 = require("canvas");
55
54
  const path_1 = __importDefault(require("path"));
56
55
  const utils_1 = require("./utils");
57
56
  const types_1 = require("./types");
@@ -64,6 +63,7 @@ const DEFAULT_TEMPLATE_OPTIONS = {
64
63
  class Template {
65
64
  // disallow constructor initialization
66
65
  constructor(options) {
66
+ this.fonts = {};
67
67
  this.layers = [];
68
68
  this.debugMode = false;
69
69
  this.template = (fn) => this.layer(entry => {
@@ -120,7 +120,7 @@ class Template {
120
120
  return undefined;
121
121
  }
122
122
  const text = this.textFromTextRef(entry, ref);
123
- const result = yield (0, utils_1.renderText)(text, box, this.backgroundSize, mergedOptions);
123
+ const result = yield (0, utils_1.renderText)(text, box, this.backgroundSize, mergedOptions, this.fonts);
124
124
  // debug mode
125
125
  if (debugMode) {
126
126
  const debugImage = yield (0, utils_1.drawBoundingBox)(box, this.backgroundSize);
@@ -209,9 +209,8 @@ class Template {
209
209
  return this;
210
210
  }
211
211
  font(path, name) {
212
- (0, canvas_1.registerFont)(path.toString(), {
213
- family: name,
214
- });
212
+ // TODO: pass font weight and font style as well
213
+ this.fonts[name] = fs.readFileSync(path.toString()).toString('base64');
215
214
  return this;
216
215
  }
217
216
  debug() {
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/lib/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/lib/template.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import { ImageType, BoundingBox, Size, TextLayerOptions } from '../types';
2
2
  import { RequiredDeep } from 'type-fest';
3
- export declare const renderText: <EntryType extends Record<string, string>>(text: string, box: BoundingBox, backgroundSize: Size, options: RequiredDeep<TextLayerOptions<EntryType>>) => Promise<ImageType>;
3
+ export declare const renderText: <EntryType extends Record<string, string>>(text: string, box: BoundingBox, backgroundSize: Size, options: RequiredDeep<TextLayerOptions<EntryType>>, fonts: Record<string, string>) => Promise<ImageType>;
@@ -13,7 +13,7 @@ exports.renderText = void 0;
13
13
  const virtual_dom_1 = require("virtual-dom");
14
14
  const toPx_1 = require("./toPx");
15
15
  const htmlToImage_1 = require("./htmlToImage");
16
- const renderText = (text, box, backgroundSize, options) => __awaiter(void 0, void 0, void 0, function* () {
16
+ const renderText = (text, box, backgroundSize, options, fonts) => __awaiter(void 0, void 0, void 0, function* () {
17
17
  let textChildren = [text];
18
18
  for (const [word, image] of Object.entries(options.replacement)) {
19
19
  const regex = new RegExp(word, 'gi');
@@ -41,7 +41,7 @@ const renderText = (text, box, backgroundSize, options) => __awaiter(void 0, voi
41
41
  }
42
42
  textChildren = tmpChildren;
43
43
  }
44
- const document = (0, virtual_dom_1.h)('div', {
44
+ const content = (0, virtual_dom_1.h)('div', {
45
45
  style: Object.assign({ display: 'flex', overflow: 'visible', position: 'absolute', justifyContent: options.justifyContent, alignItems: options.alignItems }, (0, toPx_1.boundingBoxToPx)(box)),
46
46
  }, [
47
47
  (0, virtual_dom_1.h)('div', {
@@ -57,6 +57,17 @@ const renderText = (text, box, backgroundSize, options) => __awaiter(void 0, voi
57
57
  },
58
58
  }, textChildren),
59
59
  ]);
60
+ const document = (0, virtual_dom_1.h)('html', [
61
+ (0, virtual_dom_1.h)('head', [
62
+ (0, virtual_dom_1.h)('style', Object.entries(fonts)
63
+ .map(([name, data]) => `@font-face {
64
+ font-family: '${name}';
65
+ src: url(data:font/ttf;base64,${data}) format('truetype');
66
+ }`)
67
+ .join('\n')),
68
+ ]),
69
+ (0, virtual_dom_1.h)('body', [content]),
70
+ ]);
60
71
  return (0, htmlToImage_1.htmlToImage)(document, backgroundSize);
61
72
  });
62
73
  exports.renderText = renderText;
@@ -1 +1 @@
1
- {"version":3,"file":"renderText.js","sourceRoot":"","sources":["../../../../src/lib/utils/renderText.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAuC;AAEvC,iCAA+C;AAC/C,+CAA4C;AAGrC,MAAM,UAAU,GAAG,CACtB,IAAY,EACZ,GAAgB,EAChB,cAAoB,EACpB,OAAkD,EAChC,EAAE;IACpB,IAAI,YAAY,GAA0B,CAAC,IAAI,CAAC,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAEvD,IAAI,WAAW,GAA0B,EAAE,CAAC;QAC5C,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACrC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAClC,SAAS;YACb,CAAC;YAED,MAAM,KAAK,GAAI,WAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;gBAChD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACZ,WAAW,CAAC,IAAI,CACZ,IAAA,eAAC,EACG,KAAK,EACL;wBACI,KAAK,EAAE;4BACH,OAAO,EAAE,QAAQ;4BACjB,aAAa,EAAE,QAAQ;4BACvB,MAAM,EAAE,IAAA,WAAI,EAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;4BAC/B,KAAK,EAAE,MAAM;yBAChB;wBACD,GAAG,EAAE,WAAW;qBACnB,EACD,EAAE,CACL,CACJ,CAAC;gBACN,CAAC;gBACD,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACnC,CAAC;QACL,CAAC;QAED,YAAY,GAAG,WAAW,CAAC;IAC/B,CAAC;IAED,MAAM,QAAQ,GAAG,IAAA,eAAC,EACd,KAAK,EACL;QACI,KAAK,kBACD,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,UAAU,EAEpB,cAAc,EAAE,OAAO,CAAC,cAAc,EACtC,UAAU,EAAE,OAAO,CAAC,UAAU,IAE3B,IAAA,sBAAe,EAAC,GAAG,CAAC,CAC1B;KACJ,EACD;QACI,IAAA,eAAC,EACG,KAAK,EACL;YACI,KAAK,EAAE;gBACH,QAAQ,EAAE,SAAS;gBACnB,YAAY,EAAE,WAAW;gBACzB,UAAU,EAAE,QAAQ;gBAEpB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;gBAC/B,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;gBAC3B,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBACrD,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;aACrD;SACJ,EACD,YAAY,CACf;KACJ,CACJ,CAAC;IAEF,OAAO,IAAA,yBAAW,EAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AACjD,CAAC,CAAA,CAAC;AA/EW,QAAA,UAAU,cA+ErB"}
1
+ {"version":3,"file":"renderText.js","sourceRoot":"","sources":["../../../../src/lib/utils/renderText.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hellkite/pipkin",
3
- "version": "0.5.2",
3
+ "version": "0.6.1",
4
4
  "description": "Library for board game card generation",
5
5
  "main": "build/src/index.js",
6
6
  "types": "build/src/index.d.ts",
package/roadmap.md CHANGED
@@ -2,18 +2,21 @@
2
2
 
3
3
 
4
4
  ### Features
5
- - [ ] Containers (row, column, grid)
6
- - [ ] Replace text rendering solution with `html2canvas`
7
5
  - [ ] Storage adaptors for fs, web, browser, s3, etc
8
6
  - [ ] Draw geometry
9
- - [ ] Noise overlays
7
+ - [ ] Noise/texture overlays
8
+ - [ ] Text border
10
9
 
10
+ ### Bugfixes
11
+ - [x] Broken custom fonts
11
12
 
12
13
  ### Optimizations
13
14
  - [ ] Optional image registry that reduce repeating loading of same images
14
15
  - [ ] Stream processing support
16
+ - [ ] Overlay the entire card in HTML and render to image only once
15
17
 
16
18
 
17
19
  ### Quality of Life Improvements
18
20
  - [ ] Expose logging, warnings, stats and progress status data
19
21
  - [ ] Runtime resource configuration
22
+ - [ ] Debugging layer
@@ -68,6 +68,7 @@ export type TemplateLayerFn<EntryType extends Record<string, string>> = (
68
68
  ) => Template<EntryType>;
69
69
 
70
70
  export class Template<EntryType extends Record<string, string>> {
71
+ private readonly fonts: Record<string, string> = {};
71
72
  private readonly layers: LayerFn<EntryType>[] = [];
72
73
  private readonly background: ImageType;
73
74
  private debugMode: boolean = false;
@@ -133,11 +134,8 @@ export class Template<EntryType extends Record<string, string>> {
133
134
  options?: ContainerOptions<EntryType>,
134
135
  ): this =>
135
136
  this.layer(async (entry: EntryType, { debugMode }) => {
136
- const mergedOptions: RequiredDeep<ContainerOptions<EntryType>>= merge(
137
- {},
138
- DEFAULT_CONTAINER_OPTIONS,
139
- options,
140
- );
137
+ const mergedOptions: RequiredDeep<ContainerOptions<EntryType>> =
138
+ merge({}, DEFAULT_CONTAINER_OPTIONS, options);
141
139
  if (this.shouldSkipLayerForEntry(entry, mergedOptions)) {
142
140
  return undefined;
143
141
  }
@@ -185,17 +183,22 @@ export class Template<EntryType extends Record<string, string>> {
185
183
  options: ImageLayerOptions<EntryType>,
186
184
  ): this =>
187
185
  this.layer(async (entry, { debugMode }) => {
188
- const mergedOptions: RequiredDeep<ImageLayerOptions<EntryType>>= merge(
189
- {},
190
- DEFAULT_IMAGE_LAYER_OPTIONS,
191
- { assetsPath: this.defaultAssetsPath },
192
- options,
193
- );
186
+ const mergedOptions: RequiredDeep<ImageLayerOptions<EntryType>> =
187
+ merge(
188
+ {},
189
+ DEFAULT_IMAGE_LAYER_OPTIONS,
190
+ { assetsPath: this.defaultAssetsPath },
191
+ options,
192
+ );
194
193
  if (this.shouldSkipLayerForEntry(entry, mergedOptions)) {
195
194
  return undefined;
196
195
  }
197
196
 
198
- const image = await this.pathFromImageRef(entry, ref, mergedOptions);
197
+ const image = await this.pathFromImageRef(
198
+ entry,
199
+ ref,
200
+ mergedOptions,
201
+ );
199
202
  const result = await placeImage({
200
203
  image,
201
204
  box,
@@ -214,6 +217,7 @@ export class Template<EntryType extends Record<string, string>> {
214
217
 
215
218
  return result;
216
219
  });
220
+
217
221
  loadImage = async (imagePath: string | Buffer): Promise<ImageType> => {
218
222
  const image = (await Jimp.read(imagePath)) as unknown as ImageType;
219
223
  return image;
@@ -245,6 +249,7 @@ export class Template<EntryType extends Record<string, string>> {
245
249
  box,
246
250
  this.backgroundSize,
247
251
  mergedOptions,
252
+ this.fonts,
248
253
  );
249
254
 
250
255
  // debug mode
@@ -260,9 +265,8 @@ export class Template<EntryType extends Record<string, string>> {
260
265
  });
261
266
 
262
267
  font(path: fs.PathLike, name: string): this {
263
- registerFont(path.toString(), {
264
- family: name,
265
- });
268
+ // TODO: pass font weight and font style as well
269
+ this.fonts[name] = fs.readFileSync(path.toString()).toString('base64');
266
270
  return this;
267
271
  }
268
272
 
@@ -391,10 +395,13 @@ export class Template<EntryType extends Record<string, string>> {
391
395
  }
392
396
  };
393
397
 
394
- private shouldSkipLayerForEntry = (entry: EntryType, options: LayerOptions<EntryType>): boolean => {
398
+ private shouldSkipLayerForEntry = (
399
+ entry: EntryType,
400
+ options: LayerOptions<EntryType>,
401
+ ): boolean => {
395
402
  if (typeof options.skip === 'function') {
396
403
  return options.skip(entry);
397
404
  }
398
405
  return options.skip ?? false;
399
- }
406
+ };
400
407
  }
@@ -9,6 +9,7 @@ export const renderText = async <EntryType extends Record<string, string>>(
9
9
  box: BoundingBox,
10
10
  backgroundSize: Size,
11
11
  options: RequiredDeep<TextLayerOptions<EntryType>>,
12
+ fonts: Record<string, string>,
12
13
  ): Promise<ImageType> => {
13
14
  let textChildren: Array<string | VNode> = [text];
14
15
  for (const [word, image] of Object.entries(options.replacement)) {
@@ -47,7 +48,7 @@ export const renderText = async <EntryType extends Record<string, string>>(
47
48
  textChildren = tmpChildren;
48
49
  }
49
50
 
50
- const document = h(
51
+ const content = h(
51
52
  'div',
52
53
  {
53
54
  style: {
@@ -82,5 +83,23 @@ export const renderText = async <EntryType extends Record<string, string>>(
82
83
  ],
83
84
  );
84
85
 
86
+ const document = h('html', [
87
+ h('head', [
88
+ h(
89
+ 'style',
90
+ Object.entries(fonts)
91
+ .map(
92
+ ([name, data]) =>
93
+ `@font-face {
94
+ font-family: '${name}';
95
+ src: url(data:font/ttf;base64,${data}) format('truetype');
96
+ }`,
97
+ )
98
+ .join('\n'),
99
+ ),
100
+ ]),
101
+ h('body', [content]),
102
+ ]);
103
+
85
104
  return htmlToImage(document, backgroundSize);
86
105
  };