@digipair/skill-pdf 0.90.0 → 0.91.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.
package/.swcrc ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "jsc": {
3
+ "target": "es2017",
4
+ "parser": {
5
+ "syntax": "typescript",
6
+ "decorators": true,
7
+ "dynamicImport": true
8
+ },
9
+ "transform": {
10
+ "decoratorMetadata": true,
11
+ "legacyDecorator": true
12
+ },
13
+ "keepClassNames": true,
14
+ "externalHelpers": true,
15
+ "loose": true
16
+ },
17
+ "module": {
18
+ "type": "es6"
19
+ },
20
+ "sourceMaps": true,
21
+ "exclude": [
22
+ "jest.config.ts",
23
+ ".*\\.spec.tsx?$",
24
+ ".*\\.test.tsx?$",
25
+ "./src/jest-setup.ts$",
26
+ "./**/jest-setup.ts$"
27
+ ]
28
+ }
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # mylib
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build mylib` to build the library.
@@ -0,0 +1,22 @@
1
+ import baseConfig from '../../eslint.config.mjs';
2
+
3
+ export default [
4
+ ...baseConfig,
5
+ {
6
+ files: ['**/*.json'],
7
+ rules: {
8
+ '@nx/dependency-checks': [
9
+ 'error',
10
+ {
11
+ ignoredFiles: [
12
+ '{projectRoot}/eslint.config.{js,cjs,mjs}',
13
+ '{projectRoot}/rollup.config.{js,ts,mjs,mts,cjs,cts}',
14
+ ],
15
+ },
16
+ ],
17
+ },
18
+ languageOptions: {
19
+ parser: await import('jsonc-eslint-parser'),
20
+ },
21
+ },
22
+ ];
package/package.json CHANGED
@@ -1,12 +1,28 @@
1
1
  {
2
2
  "name": "@digipair/skill-pdf",
3
- "version": "0.90.0",
3
+ "version": "0.91.0-0",
4
+ "type": "module",
5
+ "main": "dist/libs/skill-pdf/index.cjs.js",
6
+ "module": "dist/libs/skill-pdf/index.esm.js",
7
+ "types": "dist/libs/skill-pdf/index.esm.d.ts",
8
+ "exports": {
9
+ "./package.json": "./libs/skill-pdf/package.json",
10
+ ".": {
11
+ "development": "./dist/libs/skill-pdf/src/index.ts",
12
+ "types": "./dist/libs/skill-pdf/index.esm.d.ts",
13
+ "import": "./dist/libs/skill-pdf/index.esm.js",
14
+ "default": "./dist/libs/skill-pdf/index.cjs.js"
15
+ }
16
+ },
4
17
  "keywords": [
5
18
  "digipair",
6
- "service",
7
- "tool"
19
+ "tool",
20
+ "service"
8
21
  ],
9
- "dependencies": {},
10
- "main": "./index.cjs.js",
11
- "module": "./index.esm.js"
12
- }
22
+ "nx": {
23
+ "name": "skill-pdf"
24
+ },
25
+ "dependencies": {
26
+ "@digipair/engine": "0.91.0-0"
27
+ }
28
+ }
@@ -0,0 +1,28 @@
1
+ const { withNx } = require('@nx/rollup/with-nx');
2
+
3
+ module.exports = withNx(
4
+ {
5
+ main: 'libs/skill-pdf/src/index.ts',
6
+ outputPath: 'dist/libs/skill-pdf',
7
+ tsConfig: 'libs/skill-pdf/tsconfig.lib.json',
8
+ compiler: 'swc',
9
+ format: ['esm', "cjs"],
10
+ assets: [
11
+ {
12
+ input: 'libs/skill-pdf/',
13
+ glob: 'package.json',
14
+ output: '.'
15
+ },
16
+ {
17
+ input: 'libs/skill-pdf/src/',
18
+ glob: '*.json',
19
+ output: '.'
20
+ }
21
+ ]
22
+ },
23
+ {
24
+ // Provide additional rollup configuration here. See: https://rollupjs.org/configuration-options
25
+ // e.g.
26
+ // output: { sourcemap: true },
27
+ }
28
+ );
@@ -0,0 +1,7 @@
1
+ import { skillPdf } from './skill-pdf';
2
+
3
+ describe('skillPdf', () => {
4
+ it('should work', () => {
5
+ expect(skillPdf()).toEqual('skill-pdf');
6
+ });
7
+ });
@@ -0,0 +1,108 @@
1
+ import { PinsSettings } from '@digipair/engine';
2
+ import { PDFDocument } from 'pdf-lib';
3
+
4
+ class PDFService {
5
+ private base64ToPdf(base64: string) {
6
+ const data = base64.replace(/^data:.*;base64,/, '');
7
+ const buffer = Buffer.from(data, 'base64');
8
+ return buffer;
9
+ }
10
+
11
+ async fillForm(params: any, _pinsSettingsList: PinsSettings[], _context: any) {
12
+ const { file, data, flatten = false } = params;
13
+
14
+ const buffer = this.base64ToPdf(file);
15
+ const document = await PDFDocument.load(buffer);
16
+ const form = document.getForm();
17
+ const fields = form.getFields().filter(field => data[field.getName()] !== undefined);
18
+
19
+ for (const field of fields) {
20
+ const name = field.getName();
21
+ const value = data[name];
22
+ const type = field.constructor.name;
23
+
24
+ switch (type) {
25
+ case 'PDFTextField':
26
+ form.getTextField(name).setText(value);
27
+ break;
28
+ case 'PDFCheckBox':
29
+ value ? form.getCheckBox(name).check() : form.getCheckBox(name).uncheck();
30
+ break;
31
+ case 'PDFRadioGroup':
32
+ form.getRadioGroup(name).select(value);
33
+ break;
34
+ case 'PDFDropdown':
35
+ form.getDropdown(name).select(value);
36
+ break;
37
+ default:
38
+ break;
39
+ }
40
+ }
41
+
42
+ if (flatten) {
43
+ form.flatten();
44
+ }
45
+
46
+ return document.saveAsBase64({ dataUri: true });
47
+ }
48
+
49
+ async getFields(params: any, _pinsSettingsList: PinsSettings[], _context: any) {
50
+ const { file } = params;
51
+
52
+ const buffer = this.base64ToPdf(file);
53
+ const document = await PDFDocument.load(buffer);
54
+ const form = document.getForm();
55
+ const fields = form
56
+ .getFields()
57
+ .filter(field =>
58
+ ['PDFTextField', 'PDFCheckBox', 'PDFRadioGroup', 'PDFDropdown'].includes(
59
+ field.constructor.name,
60
+ ),
61
+ )
62
+ .reduce((acc, field) => {
63
+ const name = field.getName();
64
+ const type = field.constructor.name;
65
+ let value;
66
+
67
+ switch (type) {
68
+ case 'PDFTextField':
69
+ value = form.getTextField(name).getText();
70
+ break;
71
+ case 'PDFCheckBox':
72
+ value = form.getCheckBox(name).isChecked();
73
+ break;
74
+ case 'PDFRadioGroup':
75
+ value = form.getRadioGroup(name).getSelected();
76
+ break;
77
+ case 'PDFDropdown':
78
+ value = form.getDropdown(name).getSelected();
79
+ break;
80
+ default:
81
+ break;
82
+ }
83
+
84
+ acc[name] = value;
85
+ return acc;
86
+ }, {} as any);
87
+
88
+ return fields;
89
+ }
90
+
91
+ async getSize(params: any, _pinsSettingsList: PinsSettings[], _context: any) {
92
+ const { file } = params;
93
+
94
+ const buffer = this.base64ToPdf(file);
95
+ const document = await PDFDocument.load(buffer);
96
+
97
+ return document.getPages().length;
98
+ }
99
+ }
100
+
101
+ export const fillForm = (params: any, pinsSettingsList: PinsSettings[], context: any) =>
102
+ new PDFService().fillForm(params, pinsSettingsList, context);
103
+
104
+ export const getFields = (params: any, pinsSettingsList: PinsSettings[], context: any) =>
105
+ new PDFService().getFields(params, pinsSettingsList, context);
106
+
107
+ export const getSize = (params: any, pinsSettingsList: PinsSettings[], context: any) =>
108
+ new PDFService().getSize(params, pinsSettingsList, context);
package/tsconfig.json ADDED
@@ -0,0 +1,13 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "files": [],
4
+ "include": [],
5
+ "references": [
6
+ {
7
+ "path": "../engine"
8
+ },
9
+ {
10
+ "path": "./tsconfig.lib.json"
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "rootDir": "src",
5
+ "outDir": "dist",
6
+ "tsBuildInfoFile": "dist/tsconfig.lib.tsbuildinfo",
7
+ "emitDeclarationOnly": true,
8
+ "module": "esnext",
9
+ "moduleResolution": "node",
10
+ "forceConsistentCasingInFileNames": true,
11
+ "types": ["node"]
12
+ },
13
+ "include": ["src/**/*.ts"],
14
+ "references": [
15
+ {
16
+ "path": "../engine/tsconfig.lib.json"
17
+ }
18
+ ]
19
+ }
package/index.cjs.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./src/index";