Upload 29 files
Browse files- .idea/.gitignore +8 -0
- .idea/inspectionProfiles/profiles_settings.xml +6 -0
- .idea/invoice_extractor.iml +8 -0
- .idea/material_theme_project_new.xml +12 -0
- .idea/misc.xml +7 -0
- .idea/modules.xml +8 -0
- .idea/vcs.xml +6 -0
- .idea/workspace.xml +164 -0
- Extracted_Invoice.csv +4 -0
- Extracted_Invoice1.csv +13 -0
- Extracted_Invoice_001.csv +6 -0
- Invoice_001.pdf +0 -0
- Political_Promises_Fine_Tuning.csv +11 -0
- __pycache__/utils.cpython-311.pyc +0 -0
- app.py +40 -0
- extracted_data.csv +1 -0
- pdf_reader.py +74 -0
- pdfkit-invoice/.gitignore +2 -0
- pdfkit-invoice/README.md +38 -0
- pdfkit-invoice/createInvoice.js +193 -0
- pdfkit-invoice/index.js +31 -0
- pdfkit-invoice/logo.png +0 -0
- pdfkit-invoice/package-lock.json +1395 -0
- pdfkit-invoice/package.json +16 -0
- pdfkit-invoice/screenshot.png +0 -0
- pillmatePPTXBackground.webp +0 -0
- real_promises_only.py +114 -0
- report.md +0 -0
- utils.py +79 -0
.idea/.gitignore
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Default ignored files
|
2 |
+
/shelf/
|
3 |
+
/workspace.xml
|
4 |
+
# Editor-based HTTP Client requests
|
5 |
+
/httpRequests/
|
6 |
+
# Datasource local storage ignored files
|
7 |
+
/dataSources/
|
8 |
+
/dataSources.local.xml
|
.idea/inspectionProfiles/profiles_settings.xml
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<component name="InspectionProjectProfileManager">
|
2 |
+
<settings>
|
3 |
+
<option name="USE_PROJECT_PROFILE" value="false" />
|
4 |
+
<version value="1.0" />
|
5 |
+
</settings>
|
6 |
+
</component>
|
.idea/invoice_extractor.iml
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<module type="PYTHON_MODULE" version="4">
|
3 |
+
<component name="NewModuleRootManager">
|
4 |
+
<content url="file://$MODULE_DIR$" />
|
5 |
+
<orderEntry type="jdk" jdkName="llm_env" jdkType="Python SDK" />
|
6 |
+
<orderEntry type="sourceFolder" forTests="false" />
|
7 |
+
</component>
|
8 |
+
</module>
|
.idea/material_theme_project_new.xml
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<project version="4">
|
3 |
+
<component name="MaterialThemeProjectNewConfig">
|
4 |
+
<option name="metadata">
|
5 |
+
<MTProjectMetadataState>
|
6 |
+
<option name="migrated" value="true" />
|
7 |
+
<option name="pristineConfig" value="false" />
|
8 |
+
<option name="userId" value="13c809ac:18ec6bfab90:-7ffe" />
|
9 |
+
</MTProjectMetadataState>
|
10 |
+
</option>
|
11 |
+
</component>
|
12 |
+
</project>
|
.idea/misc.xml
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<project version="4">
|
3 |
+
<component name="Black">
|
4 |
+
<option name="sdkName" value="C:\Users\kosti\anaconda3" />
|
5 |
+
</component>
|
6 |
+
<component name="ProjectRootManager" version="2" project-jdk-name="llm_env" project-jdk-type="Python SDK" />
|
7 |
+
</project>
|
.idea/modules.xml
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<project version="4">
|
3 |
+
<component name="ProjectModuleManager">
|
4 |
+
<modules>
|
5 |
+
<module fileurl="file://$PROJECT_DIR$/.idea/invoice_extractor.iml" filepath="$PROJECT_DIR$/.idea/invoice_extractor.iml" />
|
6 |
+
</modules>
|
7 |
+
</component>
|
8 |
+
</project>
|
.idea/vcs.xml
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<project version="4">
|
3 |
+
<component name="VcsDirectoryMappings">
|
4 |
+
<mapping directory="$PROJECT_DIR$/pdfkit-invoice" vcs="Git" />
|
5 |
+
</component>
|
6 |
+
</project>
|
.idea/workspace.xml
ADDED
@@ -0,0 +1,164 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<project version="4">
|
3 |
+
<component name="AutoImportSettings">
|
4 |
+
<option name="autoReloadType" value="SELECTIVE" />
|
5 |
+
</component>
|
6 |
+
<component name="ChangeListManager">
|
7 |
+
<list default="true" id="5d5b8dc8-e7fe-43d9-8802-74478f493adb" name="Changes" comment="" />
|
8 |
+
<option name="SHOW_DIALOG" value="false" />
|
9 |
+
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
10 |
+
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
11 |
+
<option name="LAST_RESOLUTION" value="IGNORE" />
|
12 |
+
</component>
|
13 |
+
<component name="FileTemplateManagerImpl">
|
14 |
+
<option name="RECENT_TEMPLATES">
|
15 |
+
<list>
|
16 |
+
<option value="Python Script" />
|
17 |
+
</list>
|
18 |
+
</option>
|
19 |
+
</component>
|
20 |
+
<component name="Git.Settings">
|
21 |
+
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/pdfkit-invoice" />
|
22 |
+
</component>
|
23 |
+
<component name="ProjectColorInfo">{
|
24 |
+
"associatedIndex": 4
|
25 |
+
}</component>
|
26 |
+
<component name="ProjectId" id="2f2dqHtOqUJDiIt51G8oHM6rauH" />
|
27 |
+
<component name="ProjectViewState">
|
28 |
+
<option name="hideEmptyMiddlePackages" value="true" />
|
29 |
+
<option name="showLibraryContents" value="true" />
|
30 |
+
</component>
|
31 |
+
<component name="PropertiesComponent">{
|
32 |
+
"keyToString": {
|
33 |
+
"Python.pdf_reader.executor": "Run",
|
34 |
+
"Python.real_promises_only.executor": "Run",
|
35 |
+
"RunOnceActivity.ShowReadmeOnStart": "true",
|
36 |
+
"git-widget-placeholder": "master",
|
37 |
+
"node.js.detected.package.eslint": "true",
|
38 |
+
"node.js.detected.package.tslint": "true",
|
39 |
+
"node.js.selected.package.eslint": "(autodetect)",
|
40 |
+
"node.js.selected.package.tslint": "(autodetect)",
|
41 |
+
"nodejs_package_manager_path": "npm",
|
42 |
+
"vue.rearranger.settings.migration": "true"
|
43 |
+
}
|
44 |
+
}</component>
|
45 |
+
<component name="RunManager" selected="Python.real_promises_only">
|
46 |
+
<configuration name="app" type="PythonConfigurationType" factoryName="Python" nameIsGenerated="true">
|
47 |
+
<module name="invoice_extractor" />
|
48 |
+
<option name="ENV_FILES" value="" />
|
49 |
+
<option name="INTERPRETER_OPTIONS" value="" />
|
50 |
+
<option name="PARENT_ENVS" value="true" />
|
51 |
+
<envs>
|
52 |
+
<env name="PYTHONUNBUFFERED" value="1" />
|
53 |
+
</envs>
|
54 |
+
<option name="SDK_HOME" value="" />
|
55 |
+
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
56 |
+
<option name="IS_MODULE_SDK" value="true" />
|
57 |
+
<option name="ADD_CONTENT_ROOTS" value="true" />
|
58 |
+
<option name="ADD_SOURCE_ROOTS" value="true" />
|
59 |
+
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
60 |
+
<option name="SCRIPT_NAME" value="C:\Users\kosti\PycharmProjects\invoice_extractor\app.py" />
|
61 |
+
<option name="PARAMETERS" value="" />
|
62 |
+
<option name="SHOW_COMMAND_LINE" value="false" />
|
63 |
+
<option name="EMULATE_TERMINAL" value="false" />
|
64 |
+
<option name="MODULE_MODE" value="false" />
|
65 |
+
<option name="REDIRECT_INPUT" value="false" />
|
66 |
+
<option name="INPUT_FILE" value="" />
|
67 |
+
<method v="2" />
|
68 |
+
</configuration>
|
69 |
+
<configuration name="pdf_reader" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
70 |
+
<module name="invoice_extractor" />
|
71 |
+
<option name="ENV_FILES" value="" />
|
72 |
+
<option name="INTERPRETER_OPTIONS" value="" />
|
73 |
+
<option name="PARENT_ENVS" value="true" />
|
74 |
+
<envs>
|
75 |
+
<env name="PYTHONUNBUFFERED" value="1" />
|
76 |
+
</envs>
|
77 |
+
<option name="SDK_HOME" value="" />
|
78 |
+
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
79 |
+
<option name="IS_MODULE_SDK" value="true" />
|
80 |
+
<option name="ADD_CONTENT_ROOTS" value="true" />
|
81 |
+
<option name="ADD_SOURCE_ROOTS" value="true" />
|
82 |
+
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
83 |
+
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/pdf_reader.py" />
|
84 |
+
<option name="PARAMETERS" value="" />
|
85 |
+
<option name="SHOW_COMMAND_LINE" value="false" />
|
86 |
+
<option name="EMULATE_TERMINAL" value="false" />
|
87 |
+
<option name="MODULE_MODE" value="false" />
|
88 |
+
<option name="REDIRECT_INPUT" value="false" />
|
89 |
+
<option name="INPUT_FILE" value="" />
|
90 |
+
<method v="2" />
|
91 |
+
</configuration>
|
92 |
+
<configuration name="real_promises_only" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
93 |
+
<module name="invoice_extractor" />
|
94 |
+
<option name="ENV_FILES" value="" />
|
95 |
+
<option name="INTERPRETER_OPTIONS" value="" />
|
96 |
+
<option name="PARENT_ENVS" value="true" />
|
97 |
+
<envs>
|
98 |
+
<env name="PYTHONUNBUFFERED" value="1" />
|
99 |
+
</envs>
|
100 |
+
<option name="SDK_HOME" value="" />
|
101 |
+
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
102 |
+
<option name="IS_MODULE_SDK" value="true" />
|
103 |
+
<option name="ADD_CONTENT_ROOTS" value="true" />
|
104 |
+
<option name="ADD_SOURCE_ROOTS" value="true" />
|
105 |
+
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
106 |
+
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/real_promises_only.py" />
|
107 |
+
<option name="PARAMETERS" value="" />
|
108 |
+
<option name="SHOW_COMMAND_LINE" value="false" />
|
109 |
+
<option name="EMULATE_TERMINAL" value="false" />
|
110 |
+
<option name="MODULE_MODE" value="false" />
|
111 |
+
<option name="REDIRECT_INPUT" value="false" />
|
112 |
+
<option name="INPUT_FILE" value="" />
|
113 |
+
<method v="2" />
|
114 |
+
</configuration>
|
115 |
+
<recent_temporary>
|
116 |
+
<list>
|
117 |
+
<item itemvalue="Python.real_promises_only" />
|
118 |
+
<item itemvalue="Python.pdf_reader" />
|
119 |
+
</list>
|
120 |
+
</recent_temporary>
|
121 |
+
</component>
|
122 |
+
<component name="SharedIndexes">
|
123 |
+
<attachedChunks>
|
124 |
+
<set>
|
125 |
+
<option value="bundled-js-predefined-1d06a55b98c1-74d2a5396914-JavaScript-PY-241.14494.241" />
|
126 |
+
<option value="bundled-python-sdk-0509580d9d50-28c9f5db9ffe-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-241.14494.241" />
|
127 |
+
</set>
|
128 |
+
</attachedChunks>
|
129 |
+
</component>
|
130 |
+
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
131 |
+
<component name="TaskManager">
|
132 |
+
<task active="true" id="Default" summary="Default task">
|
133 |
+
<changelist id="5d5b8dc8-e7fe-43d9-8802-74478f493adb" name="Changes" comment="" />
|
134 |
+
<created>1713003295790</created>
|
135 |
+
<option name="number" value="Default" />
|
136 |
+
<option name="presentableId" value="Default" />
|
137 |
+
<updated>1713003295790</updated>
|
138 |
+
<workItem from="1713003297318" duration="7246000" />
|
139 |
+
<workItem from="1713108901124" duration="72000" />
|
140 |
+
<workItem from="1713108981255" duration="5119000" />
|
141 |
+
<workItem from="1713203072228" duration="313000" />
|
142 |
+
<workItem from="1713303909981" duration="380000" />
|
143 |
+
</task>
|
144 |
+
<servers />
|
145 |
+
</component>
|
146 |
+
<component name="TypeScriptGeneratedFilesManager">
|
147 |
+
<option name="version" value="3" />
|
148 |
+
</component>
|
149 |
+
<component name="XDebuggerManager">
|
150 |
+
<breakpoint-manager>
|
151 |
+
<breakpoints>
|
152 |
+
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
153 |
+
<url>file://$PROJECT_DIR$/app.py</url>
|
154 |
+
<line>8</line>
|
155 |
+
<option name="timeStamp" value="1" />
|
156 |
+
</line-breakpoint>
|
157 |
+
</breakpoints>
|
158 |
+
</breakpoint-manager>
|
159 |
+
</component>
|
160 |
+
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
161 |
+
<SUITE FILE_PATH="coverage/invoice_extractor$real_promises_only.coverage" NAME="real_promises_only Coverage Results" MODIFIED="1713113163159" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
162 |
+
<SUITE FILE_PATH="coverage/invoice_extractor$pdf_reader.coverage" NAME="pdf_reader Coverage Results" MODIFIED="1713010596714" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
163 |
+
</component>
|
164 |
+
</project>
|
Extracted_Invoice.csv
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
0
|
2 |
+
"
|
3 |
+
|
4 |
+
{'Invoice no.': '001', 'Description': ['Widget A', 'Widget B'], 'Quantity': ['2', '5'], 'Date': '2024-04-13', 'Unit price': ['$30.00', '$20.00'], 'Amount': ['$60.00', '$100.00'], 'Total': '$168.00', 'email': '[email protected]', 'phone number': '(123) 456-7890', 'address': ['123 AI Lane', 'Model Town', 'OpenAI'], 'customer name': 'John Doe', 'customer address': '789 Coding Rd, Dev City', 'customer email': '[email protected]', 'customer phone': '(987) 654-3210'}"
|
Extracted_Invoice1.csv
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
0
|
2 |
+
"
|
3 |
+
|
4 |
+
- Invoice no.: 001
|
5 |
+
- Description: Widget A, Widget B
|
6 |
+
- Quantity: 2, 5
|
7 |
+
- Date: 2024-04-13
|
8 |
+
- Unit price: $30.00, $20.00
|
9 |
+
- Amount: $60.00, $100.00
|
10 |
+
- Total: $160.00
|
11 |
+
- Email: [email protected]
|
12 |
+
- Phone number: (123) 456-7890
|
13 |
+
- Address: 123 AI Lane, Model Town, OpenAI"
|
Extracted_Invoice_001.csv
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
0
|
2 |
+
" {'email': '[email protected]', 'phone number': '(123) 456-7890', 'address': '123 AI Lane, Model Town, OpenAI'}
|
3 |
+
|
4 |
+
{'Invoice no.': '001', 'Description': 'Widget A', 'Quantity': '2', 'Date': '2024-04-13', 'Unit price': '30.00', 'Amount': '60.00', 'Total': '160.00'}
|
5 |
+
{'Invoice no.': '001', 'Description': 'Widget B', 'Quantity': '5', 'Date': '2024-04-13', 'Unit price': '20.00', 'Amount': '100.00', 'Total': '160.00'}
|
6 |
+
{'email': '[email protected]', 'phone number': '(123) 456-7890', 'address': '123 AI Lane, Model Town, OpenAI'}"
|
Invoice_001.pdf
ADDED
Binary file (1.63 kB). View file
|
|
Political_Promises_Fine_Tuning.csv
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
text,label
|
2 |
+
"We will build 10,000 kilometres of subway lines in the next ten years.",promise
|
3 |
+
We expect the Japanese to increase tariffs next year.,not promise
|
4 |
+
We will work towards making Canada a better place.,not promise
|
5 |
+
AI will cause the loss of a million jobs next year.,not promise
|
6 |
+
The government will provide free college education to all students by 2025.,promise
|
7 |
+
Interest rates are expected to rise by next quarter.,not promise
|
8 |
+
"We will eliminate the income tax for individuals earning less than $30,000 by next year.",promise
|
9 |
+
The economy is predicted to grow by 4% in the coming fiscal year.,not promise
|
10 |
+
Our administration will ensure the construction of 500 new schools in rural areas within five years.,promise
|
11 |
+
Climate change will likely increase temperatures globally.,not promise
|
__pycache__/utils.cpython-311.pyc
ADDED
Binary file (4.02 kB). View file
|
|
app.py
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
from dotenv import load_dotenv
|
3 |
+
|
4 |
+
from utils import *
|
5 |
+
|
6 |
+
|
7 |
+
def main():
|
8 |
+
load_dotenv()
|
9 |
+
|
10 |
+
st.set_page_config(page_title="Invoice Extractor")
|
11 |
+
st.title("Invoice Extractor Bot...")
|
12 |
+
st.subheader("I can help you in extracting invoice data")
|
13 |
+
|
14 |
+
# Upload the Invoices (pdf files)
|
15 |
+
pdf = st.file_uploader("Upload invoices here", type=["pdf"], accept_multiple_files=True)
|
16 |
+
|
17 |
+
submit = st.button("Extract Data")
|
18 |
+
|
19 |
+
if submit:
|
20 |
+
with st.spinner("Loading invoices..."):
|
21 |
+
df = create_docs(pdf)
|
22 |
+
# st.write('managed to extract data from pdf')
|
23 |
+
# st.write(df)
|
24 |
+
st.write(df.head())
|
25 |
+
|
26 |
+
# Saving the dataframe as CSV file
|
27 |
+
data_as_csv = df.to_csv(index=False).encode('utf-8')
|
28 |
+
st.download_button(
|
29 |
+
"Download CSV",
|
30 |
+
data_as_csv,
|
31 |
+
"invoice_extracted_data.csv",
|
32 |
+
"text/csv",
|
33 |
+
key="download-tools-csv",
|
34 |
+
)
|
35 |
+
|
36 |
+
st.success("Hope I was able to save your time <3")
|
37 |
+
|
38 |
+
|
39 |
+
if __name__ == '__main__':
|
40 |
+
main()
|
extracted_data.csv
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
|
pdf_reader.py
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# import pandas as pd
|
2 |
+
# import json
|
3 |
+
#
|
4 |
+
#
|
5 |
+
# # Function to parse the LLM output and create a DataFrame
|
6 |
+
# def process_llm_data(llm_data):
|
7 |
+
# # Assuming llm_data is a string that exactly matches the dictionary format
|
8 |
+
# # Safely convert string representation of dictionary to a dictionary
|
9 |
+
# data_dict = eval(llm_data.strip())
|
10 |
+
#
|
11 |
+
# # Convert the dictionary to a DataFrame
|
12 |
+
# # Since our example has comma-separated values in strings for some fields, let's handle that
|
13 |
+
# for key, value in data_dict.items():
|
14 |
+
# if ',' in value:
|
15 |
+
# data_dict[key] = [v.strip() for v in value.split(',')]
|
16 |
+
# else:
|
17 |
+
# data_dict[key] = [value]
|
18 |
+
#
|
19 |
+
# df = pd.DataFrame(data_dict)
|
20 |
+
#
|
21 |
+
# # Saving the DataFrame to a CSV file
|
22 |
+
# csv_file_path = "Invoice_Data.csv"
|
23 |
+
# df.to_csv(csv_file_path, index=False)
|
24 |
+
#
|
25 |
+
# return csv_file_path
|
26 |
+
#
|
27 |
+
#
|
28 |
+
# # Example usage
|
29 |
+
# llm_extracted_data = """
|
30 |
+
# {
|
31 |
+
# 'Invoice no.': '001',
|
32 |
+
# 'Description': 'Widget A, Widget B',
|
33 |
+
# 'Quantity': '2, 5',
|
34 |
+
# 'Date': '2024-04-13',
|
35 |
+
# 'Unit price': '$30.00, $20.00',
|
36 |
+
# 'Amount': '$60.00, $100.00',
|
37 |
+
# 'Total': '$160.00',
|
38 |
+
# 'Email': '[email protected]',
|
39 |
+
# 'Phone number': '(123) 456-7890',
|
40 |
+
# 'Address': '123 AI Lane, Model Town, OpenAI'
|
41 |
+
# }
|
42 |
+
# """
|
43 |
+
#
|
44 |
+
# # Call the function to process the data and create a CSV
|
45 |
+
# csv_path = process_llm_data(llm_extracted_data)
|
46 |
+
# print(f"Data saved to CSV at: {csv_path}")
|
47 |
+
|
48 |
+
import pandas as pd
|
49 |
+
from utils import get_pdf_text, extracted_data
|
50 |
+
from dotenv import load_dotenv
|
51 |
+
|
52 |
+
load_dotenv()
|
53 |
+
|
54 |
+
|
55 |
+
def save_data_to_csv(data, filename):
|
56 |
+
# Convert the dictionary to a DataFrame
|
57 |
+
df = pd.DataFrame([data])
|
58 |
+
print(df)
|
59 |
+
# Save the DataFrame to a CSV file
|
60 |
+
csv_path = f"{filename}.csv"
|
61 |
+
df.to_csv(csv_path, index=False)
|
62 |
+
print(f"Data saved to {csv_path}")
|
63 |
+
|
64 |
+
|
65 |
+
# Example usage
|
66 |
+
print('filename is {}'.format("Invoice_001.pdf"))
|
67 |
+
raw_data = get_pdf_text("Invoice_001.pdf")
|
68 |
+
print('raw_data is {}'.format(raw_data))
|
69 |
+
|
70 |
+
llm_extracted_data = extracted_data(raw_data)
|
71 |
+
print('llm_extracted_data is {}'.format(llm_extracted_data))
|
72 |
+
|
73 |
+
# Assuming llm_extracted_data is a dictionary containing the extracted fields
|
74 |
+
save_data_to_csv(llm_extracted_data, "Extracted_Invoice1")
|
pdfkit-invoice/.gitignore
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
1 |
+
node_modules
|
2 |
+
invoice.pdf
|
pdfkit-invoice/README.md
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# PDFKit Invoices
|
2 |
+
|
3 |
+
<center>
|
4 |
+
<a href="https://pspdfkit.com/web">
|
5 |
+
<img src="./screenshot.png" alt="Screenshot of an invoice PDF in the PSPDFKit for Web reader." width="1009">
|
6 |
+
</a>
|
7 |
+
</center>
|
8 |
+
|
9 |
+
## Prerequisites
|
10 |
+
|
11 |
+
- [Node.js](http://nodejs.org/) (with npm or Yarn)
|
12 |
+
|
13 |
+
## Getting Started
|
14 |
+
|
15 |
+
This repository is an example of how to make PDF invoices with PDFKit.
|
16 |
+
|
17 |
+
There are two important fields in this this repository:
|
18 |
+
|
19 |
+
- [`index.js`](index.js) is the main entry point. It defines the data structure used to create the invoices.
|
20 |
+
- [`createInvoice.js`](createInvoice.js) exports a function that can be used to create invoice PDFs.
|
21 |
+
|
22 |
+
To get started, use the following commands:
|
23 |
+
|
24 |
+
```bash
|
25 |
+
git clone https://github.com/PSPDFKit-labs/pdfkit-invoice.git
|
26 |
+
|
27 |
+
npm install # Install dependencies
|
28 |
+
|
29 |
+
npm start # This will create an invoice.pdf file in the root of the project.
|
30 |
+
```
|
31 |
+
|
32 |
+
To learn more about this project, make sure to read the accompanying [blog post](https://pspdfkit.com/blog/2019/generate-invoices-pdfkit-node)
|
33 |
+
|
34 |
+
## Contributing
|
35 |
+
|
36 |
+
Please ensure
|
37 |
+
[you have signed our CLA](https://pspdfkit.com/guides/web/current/miscellaneous/contributing/) so that we can
|
38 |
+
accept your contributions.
|
pdfkit-invoice/createInvoice.js
ADDED
@@ -0,0 +1,193 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
const fs = require("fs");
|
2 |
+
const PDFDocument = require("pdfkit");
|
3 |
+
|
4 |
+
function createInvoice(invoice, path) {
|
5 |
+
let doc = new PDFDocument({ size: "A4", margin: 50 });
|
6 |
+
|
7 |
+
generateHeader(doc);
|
8 |
+
generateCustomerInformation(doc, invoice);
|
9 |
+
generateInvoiceTable(doc, invoice);
|
10 |
+
generateFooter(doc);
|
11 |
+
|
12 |
+
doc.end();
|
13 |
+
doc.pipe(fs.createWriteStream(path));
|
14 |
+
}
|
15 |
+
|
16 |
+
function generateHeader(doc) {
|
17 |
+
doc
|
18 |
+
.image("logo.png", 50, 45, { width: 50 })
|
19 |
+
.fillColor("#444444")
|
20 |
+
.fontSize(20)
|
21 |
+
.text("ACME Inc.", 110, 57)
|
22 |
+
.fontSize(10)
|
23 |
+
.text("ACME Inc.", 200, 50, { align: "right" })
|
24 |
+
.text("123 Main Street", 200, 65, { align: "right" })
|
25 |
+
.text("New York, NY, 10025", 200, 80, { align: "right" })
|
26 |
+
.moveDown();
|
27 |
+
}
|
28 |
+
|
29 |
+
function generateCustomerInformation(doc, invoice) {
|
30 |
+
doc
|
31 |
+
.fillColor("#444444")
|
32 |
+
.fontSize(20)
|
33 |
+
.text("Invoice", 50, 160);
|
34 |
+
|
35 |
+
generateHr(doc, 185);
|
36 |
+
|
37 |
+
const customerInformationTop = 200;
|
38 |
+
|
39 |
+
doc
|
40 |
+
.fontSize(10)
|
41 |
+
.text("Invoice Number:", 50, customerInformationTop)
|
42 |
+
.font("Helvetica-Bold")
|
43 |
+
.text(invoice.invoice_nr, 150, customerInformationTop)
|
44 |
+
.font("Helvetica")
|
45 |
+
.text("Invoice Date:", 50, customerInformationTop + 15)
|
46 |
+
.text(formatDate(new Date()), 150, customerInformationTop + 15)
|
47 |
+
.text("Balance Due:", 50, customerInformationTop + 30)
|
48 |
+
.text(
|
49 |
+
formatCurrency(invoice.subtotal - invoice.paid),
|
50 |
+
150,
|
51 |
+
customerInformationTop + 30
|
52 |
+
)
|
53 |
+
|
54 |
+
.font("Helvetica-Bold")
|
55 |
+
.text(invoice.shipping.name, 300, customerInformationTop)
|
56 |
+
.font("Helvetica")
|
57 |
+
.text(invoice.shipping.address, 300, customerInformationTop + 15)
|
58 |
+
.text(
|
59 |
+
invoice.shipping.city +
|
60 |
+
", " +
|
61 |
+
invoice.shipping.state +
|
62 |
+
", " +
|
63 |
+
invoice.shipping.country,
|
64 |
+
300,
|
65 |
+
customerInformationTop + 30
|
66 |
+
)
|
67 |
+
.moveDown();
|
68 |
+
|
69 |
+
generateHr(doc, 252);
|
70 |
+
}
|
71 |
+
|
72 |
+
function generateInvoiceTable(doc, invoice) {
|
73 |
+
let i;
|
74 |
+
const invoiceTableTop = 330;
|
75 |
+
|
76 |
+
doc.font("Helvetica-Bold");
|
77 |
+
generateTableRow(
|
78 |
+
doc,
|
79 |
+
invoiceTableTop,
|
80 |
+
"Item",
|
81 |
+
"Description",
|
82 |
+
"Unit Cost",
|
83 |
+
"Quantity",
|
84 |
+
"Line Total"
|
85 |
+
);
|
86 |
+
generateHr(doc, invoiceTableTop + 20);
|
87 |
+
doc.font("Helvetica");
|
88 |
+
|
89 |
+
for (i = 0; i < invoice.items.length; i++) {
|
90 |
+
const item = invoice.items[i];
|
91 |
+
const position = invoiceTableTop + (i + 1) * 30;
|
92 |
+
generateTableRow(
|
93 |
+
doc,
|
94 |
+
position,
|
95 |
+
item.item,
|
96 |
+
item.description,
|
97 |
+
formatCurrency(item.amount / item.quantity),
|
98 |
+
item.quantity,
|
99 |
+
formatCurrency(item.amount)
|
100 |
+
);
|
101 |
+
|
102 |
+
generateHr(doc, position + 20);
|
103 |
+
}
|
104 |
+
|
105 |
+
const subtotalPosition = invoiceTableTop + (i + 1) * 30;
|
106 |
+
generateTableRow(
|
107 |
+
doc,
|
108 |
+
subtotalPosition,
|
109 |
+
"",
|
110 |
+
"",
|
111 |
+
"Subtotal",
|
112 |
+
"",
|
113 |
+
formatCurrency(invoice.subtotal)
|
114 |
+
);
|
115 |
+
|
116 |
+
const paidToDatePosition = subtotalPosition + 20;
|
117 |
+
generateTableRow(
|
118 |
+
doc,
|
119 |
+
paidToDatePosition,
|
120 |
+
"",
|
121 |
+
"",
|
122 |
+
"Paid To Date",
|
123 |
+
"",
|
124 |
+
formatCurrency(invoice.paid)
|
125 |
+
);
|
126 |
+
|
127 |
+
const duePosition = paidToDatePosition + 25;
|
128 |
+
doc.font("Helvetica-Bold");
|
129 |
+
generateTableRow(
|
130 |
+
doc,
|
131 |
+
duePosition,
|
132 |
+
"",
|
133 |
+
"",
|
134 |
+
"Balance Due",
|
135 |
+
"",
|
136 |
+
formatCurrency(invoice.subtotal - invoice.paid)
|
137 |
+
);
|
138 |
+
doc.font("Helvetica");
|
139 |
+
}
|
140 |
+
|
141 |
+
function generateFooter(doc) {
|
142 |
+
doc
|
143 |
+
.fontSize(10)
|
144 |
+
.text(
|
145 |
+
"Payment is due within 15 days. Thank you for your business.",
|
146 |
+
50,
|
147 |
+
780,
|
148 |
+
{ align: "center", width: 500 }
|
149 |
+
);
|
150 |
+
}
|
151 |
+
|
152 |
+
function generateTableRow(
|
153 |
+
doc,
|
154 |
+
y,
|
155 |
+
item,
|
156 |
+
description,
|
157 |
+
unitCost,
|
158 |
+
quantity,
|
159 |
+
lineTotal
|
160 |
+
) {
|
161 |
+
doc
|
162 |
+
.fontSize(10)
|
163 |
+
.text(item, 50, y)
|
164 |
+
.text(description, 150, y)
|
165 |
+
.text(unitCost, 280, y, { width: 90, align: "right" })
|
166 |
+
.text(quantity, 370, y, { width: 90, align: "right" })
|
167 |
+
.text(lineTotal, 0, y, { align: "right" });
|
168 |
+
}
|
169 |
+
|
170 |
+
function generateHr(doc, y) {
|
171 |
+
doc
|
172 |
+
.strokeColor("#aaaaaa")
|
173 |
+
.lineWidth(1)
|
174 |
+
.moveTo(50, y)
|
175 |
+
.lineTo(550, y)
|
176 |
+
.stroke();
|
177 |
+
}
|
178 |
+
|
179 |
+
function formatCurrency(cents) {
|
180 |
+
return "$" + (cents / 100).toFixed(2);
|
181 |
+
}
|
182 |
+
|
183 |
+
function formatDate(date) {
|
184 |
+
const day = date.getDate();
|
185 |
+
const month = date.getMonth() + 1;
|
186 |
+
const year = date.getFullYear();
|
187 |
+
|
188 |
+
return year + "/" + month + "/" + day;
|
189 |
+
}
|
190 |
+
|
191 |
+
module.exports = {
|
192 |
+
createInvoice
|
193 |
+
};
|
pdfkit-invoice/index.js
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
const { createInvoice } = require("./createInvoice.js");
|
2 |
+
|
3 |
+
const invoice = {
|
4 |
+
shipping: {
|
5 |
+
name: "John Doe",
|
6 |
+
address: "1234 Main Street",
|
7 |
+
city: "San Francisco",
|
8 |
+
state: "CA",
|
9 |
+
country: "US",
|
10 |
+
postal_code: 94111
|
11 |
+
},
|
12 |
+
items: [
|
13 |
+
{
|
14 |
+
item: "TC 100",
|
15 |
+
description: "Toner Cartridge",
|
16 |
+
quantity: 2,
|
17 |
+
amount: 6000
|
18 |
+
},
|
19 |
+
{
|
20 |
+
item: "USB_EXT",
|
21 |
+
description: "USB Cable Extender",
|
22 |
+
quantity: 1,
|
23 |
+
amount: 2000
|
24 |
+
}
|
25 |
+
],
|
26 |
+
subtotal: 8000,
|
27 |
+
paid: 0,
|
28 |
+
invoice_nr: 1234
|
29 |
+
};
|
30 |
+
|
31 |
+
createInvoice(invoice, "invoice.pdf");
|
pdfkit-invoice/logo.png
ADDED
![]() |
pdfkit-invoice/package-lock.json
ADDED
@@ -0,0 +1,1395 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "pdfkit-invoice",
|
3 |
+
"version": "1.0.0",
|
4 |
+
"lockfileVersion": 2,
|
5 |
+
"requires": true,
|
6 |
+
"packages": {
|
7 |
+
"": {
|
8 |
+
"name": "pdfkit-invoice",
|
9 |
+
"version": "1.0.0",
|
10 |
+
"license": "ISC",
|
11 |
+
"dependencies": {
|
12 |
+
"pdfkit": "^0.13.0"
|
13 |
+
}
|
14 |
+
},
|
15 |
+
"node_modules/@swc/helpers": {
|
16 |
+
"version": "0.3.17",
|
17 |
+
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.3.17.tgz",
|
18 |
+
"integrity": "sha512-tb7Iu+oZ+zWJZ3HJqwx8oNwSDIU440hmVMDPhpACWQWnrZHK99Bxs70gT1L2dnr5Hg50ZRWEFkQCAnOVVV0z1Q==",
|
19 |
+
"dependencies": {
|
20 |
+
"tslib": "^2.4.0"
|
21 |
+
}
|
22 |
+
},
|
23 |
+
"node_modules/available-typed-arrays": {
|
24 |
+
"version": "1.0.5",
|
25 |
+
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
|
26 |
+
"integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
|
27 |
+
"engines": {
|
28 |
+
"node": ">= 0.4"
|
29 |
+
},
|
30 |
+
"funding": {
|
31 |
+
"url": "https://github.com/sponsors/ljharb"
|
32 |
+
}
|
33 |
+
},
|
34 |
+
"node_modules/base64-js": {
|
35 |
+
"version": "1.5.1",
|
36 |
+
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
37 |
+
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
|
38 |
+
"funding": [
|
39 |
+
{
|
40 |
+
"type": "github",
|
41 |
+
"url": "https://github.com/sponsors/feross"
|
42 |
+
},
|
43 |
+
{
|
44 |
+
"type": "patreon",
|
45 |
+
"url": "https://www.patreon.com/feross"
|
46 |
+
},
|
47 |
+
{
|
48 |
+
"type": "consulting",
|
49 |
+
"url": "https://feross.org/support"
|
50 |
+
}
|
51 |
+
]
|
52 |
+
},
|
53 |
+
"node_modules/brotli": {
|
54 |
+
"version": "1.3.3",
|
55 |
+
"resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz",
|
56 |
+
"integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==",
|
57 |
+
"dependencies": {
|
58 |
+
"base64-js": "^1.1.2"
|
59 |
+
}
|
60 |
+
},
|
61 |
+
"node_modules/call-bind": {
|
62 |
+
"version": "1.0.2",
|
63 |
+
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
|
64 |
+
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
|
65 |
+
"dependencies": {
|
66 |
+
"function-bind": "^1.1.1",
|
67 |
+
"get-intrinsic": "^1.0.2"
|
68 |
+
},
|
69 |
+
"funding": {
|
70 |
+
"url": "https://github.com/sponsors/ljharb"
|
71 |
+
}
|
72 |
+
},
|
73 |
+
"node_modules/clone": {
|
74 |
+
"version": "2.1.2",
|
75 |
+
"resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
|
76 |
+
"integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
|
77 |
+
"engines": {
|
78 |
+
"node": ">=0.8"
|
79 |
+
}
|
80 |
+
},
|
81 |
+
"node_modules/crypto-js": {
|
82 |
+
"version": "4.1.1",
|
83 |
+
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
|
84 |
+
"integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw=="
|
85 |
+
},
|
86 |
+
"node_modules/deep-equal": {
|
87 |
+
"version": "2.0.5",
|
88 |
+
"resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz",
|
89 |
+
"integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==",
|
90 |
+
"dependencies": {
|
91 |
+
"call-bind": "^1.0.0",
|
92 |
+
"es-get-iterator": "^1.1.1",
|
93 |
+
"get-intrinsic": "^1.0.1",
|
94 |
+
"is-arguments": "^1.0.4",
|
95 |
+
"is-date-object": "^1.0.2",
|
96 |
+
"is-regex": "^1.1.1",
|
97 |
+
"isarray": "^2.0.5",
|
98 |
+
"object-is": "^1.1.4",
|
99 |
+
"object-keys": "^1.1.1",
|
100 |
+
"object.assign": "^4.1.2",
|
101 |
+
"regexp.prototype.flags": "^1.3.0",
|
102 |
+
"side-channel": "^1.0.3",
|
103 |
+
"which-boxed-primitive": "^1.0.1",
|
104 |
+
"which-collection": "^1.0.1",
|
105 |
+
"which-typed-array": "^1.1.2"
|
106 |
+
},
|
107 |
+
"funding": {
|
108 |
+
"url": "https://github.com/sponsors/ljharb"
|
109 |
+
}
|
110 |
+
},
|
111 |
+
"node_modules/define-properties": {
|
112 |
+
"version": "1.1.4",
|
113 |
+
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
|
114 |
+
"integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
|
115 |
+
"dependencies": {
|
116 |
+
"has-property-descriptors": "^1.0.0",
|
117 |
+
"object-keys": "^1.1.1"
|
118 |
+
},
|
119 |
+
"engines": {
|
120 |
+
"node": ">= 0.4"
|
121 |
+
},
|
122 |
+
"funding": {
|
123 |
+
"url": "https://github.com/sponsors/ljharb"
|
124 |
+
}
|
125 |
+
},
|
126 |
+
"node_modules/dfa": {
|
127 |
+
"version": "1.2.0",
|
128 |
+
"resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz",
|
129 |
+
"integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q=="
|
130 |
+
},
|
131 |
+
"node_modules/es-abstract": {
|
132 |
+
"version": "1.20.4",
|
133 |
+
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz",
|
134 |
+
"integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==",
|
135 |
+
"dependencies": {
|
136 |
+
"call-bind": "^1.0.2",
|
137 |
+
"es-to-primitive": "^1.2.1",
|
138 |
+
"function-bind": "^1.1.1",
|
139 |
+
"function.prototype.name": "^1.1.5",
|
140 |
+
"get-intrinsic": "^1.1.3",
|
141 |
+
"get-symbol-description": "^1.0.0",
|
142 |
+
"has": "^1.0.3",
|
143 |
+
"has-property-descriptors": "^1.0.0",
|
144 |
+
"has-symbols": "^1.0.3",
|
145 |
+
"internal-slot": "^1.0.3",
|
146 |
+
"is-callable": "^1.2.7",
|
147 |
+
"is-negative-zero": "^2.0.2",
|
148 |
+
"is-regex": "^1.1.4",
|
149 |
+
"is-shared-array-buffer": "^1.0.2",
|
150 |
+
"is-string": "^1.0.7",
|
151 |
+
"is-weakref": "^1.0.2",
|
152 |
+
"object-inspect": "^1.12.2",
|
153 |
+
"object-keys": "^1.1.1",
|
154 |
+
"object.assign": "^4.1.4",
|
155 |
+
"regexp.prototype.flags": "^1.4.3",
|
156 |
+
"safe-regex-test": "^1.0.0",
|
157 |
+
"string.prototype.trimend": "^1.0.5",
|
158 |
+
"string.prototype.trimstart": "^1.0.5",
|
159 |
+
"unbox-primitive": "^1.0.2"
|
160 |
+
},
|
161 |
+
"engines": {
|
162 |
+
"node": ">= 0.4"
|
163 |
+
},
|
164 |
+
"funding": {
|
165 |
+
"url": "https://github.com/sponsors/ljharb"
|
166 |
+
}
|
167 |
+
},
|
168 |
+
"node_modules/es-get-iterator": {
|
169 |
+
"version": "1.1.2",
|
170 |
+
"resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
|
171 |
+
"integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
|
172 |
+
"dependencies": {
|
173 |
+
"call-bind": "^1.0.2",
|
174 |
+
"get-intrinsic": "^1.1.0",
|
175 |
+
"has-symbols": "^1.0.1",
|
176 |
+
"is-arguments": "^1.1.0",
|
177 |
+
"is-map": "^2.0.2",
|
178 |
+
"is-set": "^2.0.2",
|
179 |
+
"is-string": "^1.0.5",
|
180 |
+
"isarray": "^2.0.5"
|
181 |
+
},
|
182 |
+
"funding": {
|
183 |
+
"url": "https://github.com/sponsors/ljharb"
|
184 |
+
}
|
185 |
+
},
|
186 |
+
"node_modules/es-to-primitive": {
|
187 |
+
"version": "1.2.1",
|
188 |
+
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
|
189 |
+
"integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
|
190 |
+
"dependencies": {
|
191 |
+
"is-callable": "^1.1.4",
|
192 |
+
"is-date-object": "^1.0.1",
|
193 |
+
"is-symbol": "^1.0.2"
|
194 |
+
},
|
195 |
+
"engines": {
|
196 |
+
"node": ">= 0.4"
|
197 |
+
},
|
198 |
+
"funding": {
|
199 |
+
"url": "https://github.com/sponsors/ljharb"
|
200 |
+
}
|
201 |
+
},
|
202 |
+
"node_modules/fontkit": {
|
203 |
+
"version": "1.9.0",
|
204 |
+
"resolved": "https://registry.npmjs.org/fontkit/-/fontkit-1.9.0.tgz",
|
205 |
+
"integrity": "sha512-HkW/8Lrk8jl18kzQHvAw9aTHe1cqsyx5sDnxncx652+CIfhawokEPkeM3BoIC+z/Xv7a0yMr0f3pRRwhGH455g==",
|
206 |
+
"dependencies": {
|
207 |
+
"@swc/helpers": "^0.3.13",
|
208 |
+
"brotli": "^1.3.2",
|
209 |
+
"clone": "^2.1.2",
|
210 |
+
"deep-equal": "^2.0.5",
|
211 |
+
"dfa": "^1.2.0",
|
212 |
+
"restructure": "^2.0.1",
|
213 |
+
"tiny-inflate": "^1.0.3",
|
214 |
+
"unicode-properties": "^1.3.1",
|
215 |
+
"unicode-trie": "^2.0.0"
|
216 |
+
}
|
217 |
+
},
|
218 |
+
"node_modules/for-each": {
|
219 |
+
"version": "0.3.3",
|
220 |
+
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
|
221 |
+
"integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
|
222 |
+
"dependencies": {
|
223 |
+
"is-callable": "^1.1.3"
|
224 |
+
}
|
225 |
+
},
|
226 |
+
"node_modules/function-bind": {
|
227 |
+
"version": "1.1.1",
|
228 |
+
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
229 |
+
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
|
230 |
+
},
|
231 |
+
"node_modules/function.prototype.name": {
|
232 |
+
"version": "1.1.5",
|
233 |
+
"resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
|
234 |
+
"integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
|
235 |
+
"dependencies": {
|
236 |
+
"call-bind": "^1.0.2",
|
237 |
+
"define-properties": "^1.1.3",
|
238 |
+
"es-abstract": "^1.19.0",
|
239 |
+
"functions-have-names": "^1.2.2"
|
240 |
+
},
|
241 |
+
"engines": {
|
242 |
+
"node": ">= 0.4"
|
243 |
+
},
|
244 |
+
"funding": {
|
245 |
+
"url": "https://github.com/sponsors/ljharb"
|
246 |
+
}
|
247 |
+
},
|
248 |
+
"node_modules/functions-have-names": {
|
249 |
+
"version": "1.2.3",
|
250 |
+
"resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
|
251 |
+
"integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
|
252 |
+
"funding": {
|
253 |
+
"url": "https://github.com/sponsors/ljharb"
|
254 |
+
}
|
255 |
+
},
|
256 |
+
"node_modules/get-intrinsic": {
|
257 |
+
"version": "1.1.3",
|
258 |
+
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
|
259 |
+
"integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
|
260 |
+
"dependencies": {
|
261 |
+
"function-bind": "^1.1.1",
|
262 |
+
"has": "^1.0.3",
|
263 |
+
"has-symbols": "^1.0.3"
|
264 |
+
},
|
265 |
+
"funding": {
|
266 |
+
"url": "https://github.com/sponsors/ljharb"
|
267 |
+
}
|
268 |
+
},
|
269 |
+
"node_modules/get-symbol-description": {
|
270 |
+
"version": "1.0.0",
|
271 |
+
"resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
|
272 |
+
"integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
|
273 |
+
"dependencies": {
|
274 |
+
"call-bind": "^1.0.2",
|
275 |
+
"get-intrinsic": "^1.1.1"
|
276 |
+
},
|
277 |
+
"engines": {
|
278 |
+
"node": ">= 0.4"
|
279 |
+
},
|
280 |
+
"funding": {
|
281 |
+
"url": "https://github.com/sponsors/ljharb"
|
282 |
+
}
|
283 |
+
},
|
284 |
+
"node_modules/has": {
|
285 |
+
"version": "1.0.3",
|
286 |
+
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
287 |
+
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
288 |
+
"dependencies": {
|
289 |
+
"function-bind": "^1.1.1"
|
290 |
+
},
|
291 |
+
"engines": {
|
292 |
+
"node": ">= 0.4.0"
|
293 |
+
}
|
294 |
+
},
|
295 |
+
"node_modules/has-bigints": {
|
296 |
+
"version": "1.0.2",
|
297 |
+
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
|
298 |
+
"integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
|
299 |
+
"funding": {
|
300 |
+
"url": "https://github.com/sponsors/ljharb"
|
301 |
+
}
|
302 |
+
},
|
303 |
+
"node_modules/has-property-descriptors": {
|
304 |
+
"version": "1.0.0",
|
305 |
+
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
|
306 |
+
"integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
|
307 |
+
"dependencies": {
|
308 |
+
"get-intrinsic": "^1.1.1"
|
309 |
+
},
|
310 |
+
"funding": {
|
311 |
+
"url": "https://github.com/sponsors/ljharb"
|
312 |
+
}
|
313 |
+
},
|
314 |
+
"node_modules/has-symbols": {
|
315 |
+
"version": "1.0.3",
|
316 |
+
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
|
317 |
+
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
|
318 |
+
"engines": {
|
319 |
+
"node": ">= 0.4"
|
320 |
+
},
|
321 |
+
"funding": {
|
322 |
+
"url": "https://github.com/sponsors/ljharb"
|
323 |
+
}
|
324 |
+
},
|
325 |
+
"node_modules/has-tostringtag": {
|
326 |
+
"version": "1.0.0",
|
327 |
+
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
|
328 |
+
"integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
|
329 |
+
"dependencies": {
|
330 |
+
"has-symbols": "^1.0.2"
|
331 |
+
},
|
332 |
+
"engines": {
|
333 |
+
"node": ">= 0.4"
|
334 |
+
},
|
335 |
+
"funding": {
|
336 |
+
"url": "https://github.com/sponsors/ljharb"
|
337 |
+
}
|
338 |
+
},
|
339 |
+
"node_modules/internal-slot": {
|
340 |
+
"version": "1.0.3",
|
341 |
+
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
|
342 |
+
"integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
|
343 |
+
"dependencies": {
|
344 |
+
"get-intrinsic": "^1.1.0",
|
345 |
+
"has": "^1.0.3",
|
346 |
+
"side-channel": "^1.0.4"
|
347 |
+
},
|
348 |
+
"engines": {
|
349 |
+
"node": ">= 0.4"
|
350 |
+
}
|
351 |
+
},
|
352 |
+
"node_modules/is-arguments": {
|
353 |
+
"version": "1.1.1",
|
354 |
+
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
|
355 |
+
"integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
|
356 |
+
"dependencies": {
|
357 |
+
"call-bind": "^1.0.2",
|
358 |
+
"has-tostringtag": "^1.0.0"
|
359 |
+
},
|
360 |
+
"engines": {
|
361 |
+
"node": ">= 0.4"
|
362 |
+
},
|
363 |
+
"funding": {
|
364 |
+
"url": "https://github.com/sponsors/ljharb"
|
365 |
+
}
|
366 |
+
},
|
367 |
+
"node_modules/is-bigint": {
|
368 |
+
"version": "1.0.4",
|
369 |
+
"resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
|
370 |
+
"integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
|
371 |
+
"dependencies": {
|
372 |
+
"has-bigints": "^1.0.1"
|
373 |
+
},
|
374 |
+
"funding": {
|
375 |
+
"url": "https://github.com/sponsors/ljharb"
|
376 |
+
}
|
377 |
+
},
|
378 |
+
"node_modules/is-boolean-object": {
|
379 |
+
"version": "1.1.2",
|
380 |
+
"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
|
381 |
+
"integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
|
382 |
+
"dependencies": {
|
383 |
+
"call-bind": "^1.0.2",
|
384 |
+
"has-tostringtag": "^1.0.0"
|
385 |
+
},
|
386 |
+
"engines": {
|
387 |
+
"node": ">= 0.4"
|
388 |
+
},
|
389 |
+
"funding": {
|
390 |
+
"url": "https://github.com/sponsors/ljharb"
|
391 |
+
}
|
392 |
+
},
|
393 |
+
"node_modules/is-callable": {
|
394 |
+
"version": "1.2.7",
|
395 |
+
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
|
396 |
+
"integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
|
397 |
+
"engines": {
|
398 |
+
"node": ">= 0.4"
|
399 |
+
},
|
400 |
+
"funding": {
|
401 |
+
"url": "https://github.com/sponsors/ljharb"
|
402 |
+
}
|
403 |
+
},
|
404 |
+
"node_modules/is-date-object": {
|
405 |
+
"version": "1.0.5",
|
406 |
+
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
|
407 |
+
"integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
|
408 |
+
"dependencies": {
|
409 |
+
"has-tostringtag": "^1.0.0"
|
410 |
+
},
|
411 |
+
"engines": {
|
412 |
+
"node": ">= 0.4"
|
413 |
+
},
|
414 |
+
"funding": {
|
415 |
+
"url": "https://github.com/sponsors/ljharb"
|
416 |
+
}
|
417 |
+
},
|
418 |
+
"node_modules/is-map": {
|
419 |
+
"version": "2.0.2",
|
420 |
+
"resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
|
421 |
+
"integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
|
422 |
+
"funding": {
|
423 |
+
"url": "https://github.com/sponsors/ljharb"
|
424 |
+
}
|
425 |
+
},
|
426 |
+
"node_modules/is-negative-zero": {
|
427 |
+
"version": "2.0.2",
|
428 |
+
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
|
429 |
+
"integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
|
430 |
+
"engines": {
|
431 |
+
"node": ">= 0.4"
|
432 |
+
},
|
433 |
+
"funding": {
|
434 |
+
"url": "https://github.com/sponsors/ljharb"
|
435 |
+
}
|
436 |
+
},
|
437 |
+
"node_modules/is-number-object": {
|
438 |
+
"version": "1.0.7",
|
439 |
+
"resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
|
440 |
+
"integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
|
441 |
+
"dependencies": {
|
442 |
+
"has-tostringtag": "^1.0.0"
|
443 |
+
},
|
444 |
+
"engines": {
|
445 |
+
"node": ">= 0.4"
|
446 |
+
},
|
447 |
+
"funding": {
|
448 |
+
"url": "https://github.com/sponsors/ljharb"
|
449 |
+
}
|
450 |
+
},
|
451 |
+
"node_modules/is-regex": {
|
452 |
+
"version": "1.1.4",
|
453 |
+
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
|
454 |
+
"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
|
455 |
+
"dependencies": {
|
456 |
+
"call-bind": "^1.0.2",
|
457 |
+
"has-tostringtag": "^1.0.0"
|
458 |
+
},
|
459 |
+
"engines": {
|
460 |
+
"node": ">= 0.4"
|
461 |
+
},
|
462 |
+
"funding": {
|
463 |
+
"url": "https://github.com/sponsors/ljharb"
|
464 |
+
}
|
465 |
+
},
|
466 |
+
"node_modules/is-set": {
|
467 |
+
"version": "2.0.2",
|
468 |
+
"resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
|
469 |
+
"integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
|
470 |
+
"funding": {
|
471 |
+
"url": "https://github.com/sponsors/ljharb"
|
472 |
+
}
|
473 |
+
},
|
474 |
+
"node_modules/is-shared-array-buffer": {
|
475 |
+
"version": "1.0.2",
|
476 |
+
"resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
|
477 |
+
"integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
|
478 |
+
"dependencies": {
|
479 |
+
"call-bind": "^1.0.2"
|
480 |
+
},
|
481 |
+
"funding": {
|
482 |
+
"url": "https://github.com/sponsors/ljharb"
|
483 |
+
}
|
484 |
+
},
|
485 |
+
"node_modules/is-string": {
|
486 |
+
"version": "1.0.7",
|
487 |
+
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
|
488 |
+
"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
|
489 |
+
"dependencies": {
|
490 |
+
"has-tostringtag": "^1.0.0"
|
491 |
+
},
|
492 |
+
"engines": {
|
493 |
+
"node": ">= 0.4"
|
494 |
+
},
|
495 |
+
"funding": {
|
496 |
+
"url": "https://github.com/sponsors/ljharb"
|
497 |
+
}
|
498 |
+
},
|
499 |
+
"node_modules/is-symbol": {
|
500 |
+
"version": "1.0.4",
|
501 |
+
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
|
502 |
+
"integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
|
503 |
+
"dependencies": {
|
504 |
+
"has-symbols": "^1.0.2"
|
505 |
+
},
|
506 |
+
"engines": {
|
507 |
+
"node": ">= 0.4"
|
508 |
+
},
|
509 |
+
"funding": {
|
510 |
+
"url": "https://github.com/sponsors/ljharb"
|
511 |
+
}
|
512 |
+
},
|
513 |
+
"node_modules/is-typed-array": {
|
514 |
+
"version": "1.1.9",
|
515 |
+
"resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz",
|
516 |
+
"integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==",
|
517 |
+
"dependencies": {
|
518 |
+
"available-typed-arrays": "^1.0.5",
|
519 |
+
"call-bind": "^1.0.2",
|
520 |
+
"es-abstract": "^1.20.0",
|
521 |
+
"for-each": "^0.3.3",
|
522 |
+
"has-tostringtag": "^1.0.0"
|
523 |
+
},
|
524 |
+
"engines": {
|
525 |
+
"node": ">= 0.4"
|
526 |
+
},
|
527 |
+
"funding": {
|
528 |
+
"url": "https://github.com/sponsors/ljharb"
|
529 |
+
}
|
530 |
+
},
|
531 |
+
"node_modules/is-weakmap": {
|
532 |
+
"version": "2.0.1",
|
533 |
+
"resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
|
534 |
+
"integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
|
535 |
+
"funding": {
|
536 |
+
"url": "https://github.com/sponsors/ljharb"
|
537 |
+
}
|
538 |
+
},
|
539 |
+
"node_modules/is-weakref": {
|
540 |
+
"version": "1.0.2",
|
541 |
+
"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
|
542 |
+
"integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
|
543 |
+
"dependencies": {
|
544 |
+
"call-bind": "^1.0.2"
|
545 |
+
},
|
546 |
+
"funding": {
|
547 |
+
"url": "https://github.com/sponsors/ljharb"
|
548 |
+
}
|
549 |
+
},
|
550 |
+
"node_modules/is-weakset": {
|
551 |
+
"version": "2.0.2",
|
552 |
+
"resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
|
553 |
+
"integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
|
554 |
+
"dependencies": {
|
555 |
+
"call-bind": "^1.0.2",
|
556 |
+
"get-intrinsic": "^1.1.1"
|
557 |
+
},
|
558 |
+
"funding": {
|
559 |
+
"url": "https://github.com/sponsors/ljharb"
|
560 |
+
}
|
561 |
+
},
|
562 |
+
"node_modules/isarray": {
|
563 |
+
"version": "2.0.5",
|
564 |
+
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
|
565 |
+
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
|
566 |
+
},
|
567 |
+
"node_modules/linebreak": {
|
568 |
+
"version": "1.1.0",
|
569 |
+
"resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz",
|
570 |
+
"integrity": "sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==",
|
571 |
+
"dependencies": {
|
572 |
+
"base64-js": "0.0.8",
|
573 |
+
"unicode-trie": "^2.0.0"
|
574 |
+
}
|
575 |
+
},
|
576 |
+
"node_modules/linebreak/node_modules/base64-js": {
|
577 |
+
"version": "0.0.8",
|
578 |
+
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz",
|
579 |
+
"integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==",
|
580 |
+
"engines": {
|
581 |
+
"node": ">= 0.4"
|
582 |
+
}
|
583 |
+
},
|
584 |
+
"node_modules/object-inspect": {
|
585 |
+
"version": "1.12.2",
|
586 |
+
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
|
587 |
+
"integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
|
588 |
+
"funding": {
|
589 |
+
"url": "https://github.com/sponsors/ljharb"
|
590 |
+
}
|
591 |
+
},
|
592 |
+
"node_modules/object-is": {
|
593 |
+
"version": "1.1.5",
|
594 |
+
"resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
|
595 |
+
"integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
|
596 |
+
"dependencies": {
|
597 |
+
"call-bind": "^1.0.2",
|
598 |
+
"define-properties": "^1.1.3"
|
599 |
+
},
|
600 |
+
"engines": {
|
601 |
+
"node": ">= 0.4"
|
602 |
+
},
|
603 |
+
"funding": {
|
604 |
+
"url": "https://github.com/sponsors/ljharb"
|
605 |
+
}
|
606 |
+
},
|
607 |
+
"node_modules/object-keys": {
|
608 |
+
"version": "1.1.1",
|
609 |
+
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
|
610 |
+
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
|
611 |
+
"engines": {
|
612 |
+
"node": ">= 0.4"
|
613 |
+
}
|
614 |
+
},
|
615 |
+
"node_modules/object.assign": {
|
616 |
+
"version": "4.1.4",
|
617 |
+
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
|
618 |
+
"integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
|
619 |
+
"dependencies": {
|
620 |
+
"call-bind": "^1.0.2",
|
621 |
+
"define-properties": "^1.1.4",
|
622 |
+
"has-symbols": "^1.0.3",
|
623 |
+
"object-keys": "^1.1.1"
|
624 |
+
},
|
625 |
+
"engines": {
|
626 |
+
"node": ">= 0.4"
|
627 |
+
},
|
628 |
+
"funding": {
|
629 |
+
"url": "https://github.com/sponsors/ljharb"
|
630 |
+
}
|
631 |
+
},
|
632 |
+
"node_modules/pako": {
|
633 |
+
"version": "0.2.9",
|
634 |
+
"resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
|
635 |
+
"integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="
|
636 |
+
},
|
637 |
+
"node_modules/pdfkit": {
|
638 |
+
"version": "0.13.0",
|
639 |
+
"resolved": "https://registry.npmjs.org/pdfkit/-/pdfkit-0.13.0.tgz",
|
640 |
+
"integrity": "sha512-AW79eHU5eLd2vgRDS9z3bSoi0FA+gYm+100LLosrQQMLUzOBGVOhG7ABcMFpJu7Bpg+MT74XYHi4k9EuU/9EZw==",
|
641 |
+
"dependencies": {
|
642 |
+
"crypto-js": "^4.0.0",
|
643 |
+
"fontkit": "^1.8.1",
|
644 |
+
"linebreak": "^1.0.2",
|
645 |
+
"png-js": "^1.0.0"
|
646 |
+
}
|
647 |
+
},
|
648 |
+
"node_modules/png-js": {
|
649 |
+
"version": "1.0.0",
|
650 |
+
"resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz",
|
651 |
+
"integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g=="
|
652 |
+
},
|
653 |
+
"node_modules/regexp.prototype.flags": {
|
654 |
+
"version": "1.4.3",
|
655 |
+
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
|
656 |
+
"integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
|
657 |
+
"dependencies": {
|
658 |
+
"call-bind": "^1.0.2",
|
659 |
+
"define-properties": "^1.1.3",
|
660 |
+
"functions-have-names": "^1.2.2"
|
661 |
+
},
|
662 |
+
"engines": {
|
663 |
+
"node": ">= 0.4"
|
664 |
+
},
|
665 |
+
"funding": {
|
666 |
+
"url": "https://github.com/sponsors/ljharb"
|
667 |
+
}
|
668 |
+
},
|
669 |
+
"node_modules/restructure": {
|
670 |
+
"version": "2.0.1",
|
671 |
+
"resolved": "https://registry.npmjs.org/restructure/-/restructure-2.0.1.tgz",
|
672 |
+
"integrity": "sha512-e0dOpjm5DseomnXx2M5lpdZ5zoHqF1+bqdMJUohoYVVQa7cBdnk7fdmeI6byNWP/kiME72EeTiSypTCVnpLiDg=="
|
673 |
+
},
|
674 |
+
"node_modules/safe-regex-test": {
|
675 |
+
"version": "1.0.0",
|
676 |
+
"resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
|
677 |
+
"integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
|
678 |
+
"dependencies": {
|
679 |
+
"call-bind": "^1.0.2",
|
680 |
+
"get-intrinsic": "^1.1.3",
|
681 |
+
"is-regex": "^1.1.4"
|
682 |
+
},
|
683 |
+
"funding": {
|
684 |
+
"url": "https://github.com/sponsors/ljharb"
|
685 |
+
}
|
686 |
+
},
|
687 |
+
"node_modules/side-channel": {
|
688 |
+
"version": "1.0.4",
|
689 |
+
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
|
690 |
+
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
|
691 |
+
"dependencies": {
|
692 |
+
"call-bind": "^1.0.0",
|
693 |
+
"get-intrinsic": "^1.0.2",
|
694 |
+
"object-inspect": "^1.9.0"
|
695 |
+
},
|
696 |
+
"funding": {
|
697 |
+
"url": "https://github.com/sponsors/ljharb"
|
698 |
+
}
|
699 |
+
},
|
700 |
+
"node_modules/string.prototype.trimend": {
|
701 |
+
"version": "1.0.5",
|
702 |
+
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz",
|
703 |
+
"integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==",
|
704 |
+
"dependencies": {
|
705 |
+
"call-bind": "^1.0.2",
|
706 |
+
"define-properties": "^1.1.4",
|
707 |
+
"es-abstract": "^1.19.5"
|
708 |
+
},
|
709 |
+
"funding": {
|
710 |
+
"url": "https://github.com/sponsors/ljharb"
|
711 |
+
}
|
712 |
+
},
|
713 |
+
"node_modules/string.prototype.trimstart": {
|
714 |
+
"version": "1.0.5",
|
715 |
+
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz",
|
716 |
+
"integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==",
|
717 |
+
"dependencies": {
|
718 |
+
"call-bind": "^1.0.2",
|
719 |
+
"define-properties": "^1.1.4",
|
720 |
+
"es-abstract": "^1.19.5"
|
721 |
+
},
|
722 |
+
"funding": {
|
723 |
+
"url": "https://github.com/sponsors/ljharb"
|
724 |
+
}
|
725 |
+
},
|
726 |
+
"node_modules/tiny-inflate": {
|
727 |
+
"version": "1.0.3",
|
728 |
+
"resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
|
729 |
+
"integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="
|
730 |
+
},
|
731 |
+
"node_modules/tslib": {
|
732 |
+
"version": "2.4.0",
|
733 |
+
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
|
734 |
+
"integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
|
735 |
+
},
|
736 |
+
"node_modules/unbox-primitive": {
|
737 |
+
"version": "1.0.2",
|
738 |
+
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
|
739 |
+
"integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
|
740 |
+
"dependencies": {
|
741 |
+
"call-bind": "^1.0.2",
|
742 |
+
"has-bigints": "^1.0.2",
|
743 |
+
"has-symbols": "^1.0.3",
|
744 |
+
"which-boxed-primitive": "^1.0.2"
|
745 |
+
},
|
746 |
+
"funding": {
|
747 |
+
"url": "https://github.com/sponsors/ljharb"
|
748 |
+
}
|
749 |
+
},
|
750 |
+
"node_modules/unicode-properties": {
|
751 |
+
"version": "1.4.1",
|
752 |
+
"resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz",
|
753 |
+
"integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==",
|
754 |
+
"dependencies": {
|
755 |
+
"base64-js": "^1.3.0",
|
756 |
+
"unicode-trie": "^2.0.0"
|
757 |
+
}
|
758 |
+
},
|
759 |
+
"node_modules/unicode-trie": {
|
760 |
+
"version": "2.0.0",
|
761 |
+
"resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz",
|
762 |
+
"integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==",
|
763 |
+
"dependencies": {
|
764 |
+
"pako": "^0.2.5",
|
765 |
+
"tiny-inflate": "^1.0.0"
|
766 |
+
}
|
767 |
+
},
|
768 |
+
"node_modules/which-boxed-primitive": {
|
769 |
+
"version": "1.0.2",
|
770 |
+
"resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
|
771 |
+
"integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
|
772 |
+
"dependencies": {
|
773 |
+
"is-bigint": "^1.0.1",
|
774 |
+
"is-boolean-object": "^1.1.0",
|
775 |
+
"is-number-object": "^1.0.4",
|
776 |
+
"is-string": "^1.0.5",
|
777 |
+
"is-symbol": "^1.0.3"
|
778 |
+
},
|
779 |
+
"funding": {
|
780 |
+
"url": "https://github.com/sponsors/ljharb"
|
781 |
+
}
|
782 |
+
},
|
783 |
+
"node_modules/which-collection": {
|
784 |
+
"version": "1.0.1",
|
785 |
+
"resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
|
786 |
+
"integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
|
787 |
+
"dependencies": {
|
788 |
+
"is-map": "^2.0.1",
|
789 |
+
"is-set": "^2.0.1",
|
790 |
+
"is-weakmap": "^2.0.1",
|
791 |
+
"is-weakset": "^2.0.1"
|
792 |
+
},
|
793 |
+
"funding": {
|
794 |
+
"url": "https://github.com/sponsors/ljharb"
|
795 |
+
}
|
796 |
+
},
|
797 |
+
"node_modules/which-typed-array": {
|
798 |
+
"version": "1.1.8",
|
799 |
+
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz",
|
800 |
+
"integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==",
|
801 |
+
"dependencies": {
|
802 |
+
"available-typed-arrays": "^1.0.5",
|
803 |
+
"call-bind": "^1.0.2",
|
804 |
+
"es-abstract": "^1.20.0",
|
805 |
+
"for-each": "^0.3.3",
|
806 |
+
"has-tostringtag": "^1.0.0",
|
807 |
+
"is-typed-array": "^1.1.9"
|
808 |
+
},
|
809 |
+
"engines": {
|
810 |
+
"node": ">= 0.4"
|
811 |
+
},
|
812 |
+
"funding": {
|
813 |
+
"url": "https://github.com/sponsors/ljharb"
|
814 |
+
}
|
815 |
+
}
|
816 |
+
},
|
817 |
+
"dependencies": {
|
818 |
+
"@swc/helpers": {
|
819 |
+
"version": "0.3.17",
|
820 |
+
"resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.3.17.tgz",
|
821 |
+
"integrity": "sha512-tb7Iu+oZ+zWJZ3HJqwx8oNwSDIU440hmVMDPhpACWQWnrZHK99Bxs70gT1L2dnr5Hg50ZRWEFkQCAnOVVV0z1Q==",
|
822 |
+
"requires": {
|
823 |
+
"tslib": "^2.4.0"
|
824 |
+
}
|
825 |
+
},
|
826 |
+
"available-typed-arrays": {
|
827 |
+
"version": "1.0.5",
|
828 |
+
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
|
829 |
+
"integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw=="
|
830 |
+
},
|
831 |
+
"base64-js": {
|
832 |
+
"version": "1.5.1",
|
833 |
+
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
834 |
+
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
|
835 |
+
},
|
836 |
+
"brotli": {
|
837 |
+
"version": "1.3.3",
|
838 |
+
"resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz",
|
839 |
+
"integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==",
|
840 |
+
"requires": {
|
841 |
+
"base64-js": "^1.1.2"
|
842 |
+
}
|
843 |
+
},
|
844 |
+
"call-bind": {
|
845 |
+
"version": "1.0.2",
|
846 |
+
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
|
847 |
+
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
|
848 |
+
"requires": {
|
849 |
+
"function-bind": "^1.1.1",
|
850 |
+
"get-intrinsic": "^1.0.2"
|
851 |
+
}
|
852 |
+
},
|
853 |
+
"clone": {
|
854 |
+
"version": "2.1.2",
|
855 |
+
"resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
|
856 |
+
"integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="
|
857 |
+
},
|
858 |
+
"crypto-js": {
|
859 |
+
"version": "4.1.1",
|
860 |
+
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
|
861 |
+
"integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw=="
|
862 |
+
},
|
863 |
+
"deep-equal": {
|
864 |
+
"version": "2.0.5",
|
865 |
+
"resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz",
|
866 |
+
"integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==",
|
867 |
+
"requires": {
|
868 |
+
"call-bind": "^1.0.0",
|
869 |
+
"es-get-iterator": "^1.1.1",
|
870 |
+
"get-intrinsic": "^1.0.1",
|
871 |
+
"is-arguments": "^1.0.4",
|
872 |
+
"is-date-object": "^1.0.2",
|
873 |
+
"is-regex": "^1.1.1",
|
874 |
+
"isarray": "^2.0.5",
|
875 |
+
"object-is": "^1.1.4",
|
876 |
+
"object-keys": "^1.1.1",
|
877 |
+
"object.assign": "^4.1.2",
|
878 |
+
"regexp.prototype.flags": "^1.3.0",
|
879 |
+
"side-channel": "^1.0.3",
|
880 |
+
"which-boxed-primitive": "^1.0.1",
|
881 |
+
"which-collection": "^1.0.1",
|
882 |
+
"which-typed-array": "^1.1.2"
|
883 |
+
}
|
884 |
+
},
|
885 |
+
"define-properties": {
|
886 |
+
"version": "1.1.4",
|
887 |
+
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
|
888 |
+
"integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
|
889 |
+
"requires": {
|
890 |
+
"has-property-descriptors": "^1.0.0",
|
891 |
+
"object-keys": "^1.1.1"
|
892 |
+
}
|
893 |
+
},
|
894 |
+
"dfa": {
|
895 |
+
"version": "1.2.0",
|
896 |
+
"resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz",
|
897 |
+
"integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q=="
|
898 |
+
},
|
899 |
+
"es-abstract": {
|
900 |
+
"version": "1.20.4",
|
901 |
+
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz",
|
902 |
+
"integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==",
|
903 |
+
"requires": {
|
904 |
+
"call-bind": "^1.0.2",
|
905 |
+
"es-to-primitive": "^1.2.1",
|
906 |
+
"function-bind": "^1.1.1",
|
907 |
+
"function.prototype.name": "^1.1.5",
|
908 |
+
"get-intrinsic": "^1.1.3",
|
909 |
+
"get-symbol-description": "^1.0.0",
|
910 |
+
"has": "^1.0.3",
|
911 |
+
"has-property-descriptors": "^1.0.0",
|
912 |
+
"has-symbols": "^1.0.3",
|
913 |
+
"internal-slot": "^1.0.3",
|
914 |
+
"is-callable": "^1.2.7",
|
915 |
+
"is-negative-zero": "^2.0.2",
|
916 |
+
"is-regex": "^1.1.4",
|
917 |
+
"is-shared-array-buffer": "^1.0.2",
|
918 |
+
"is-string": "^1.0.7",
|
919 |
+
"is-weakref": "^1.0.2",
|
920 |
+
"object-inspect": "^1.12.2",
|
921 |
+
"object-keys": "^1.1.1",
|
922 |
+
"object.assign": "^4.1.4",
|
923 |
+
"regexp.prototype.flags": "^1.4.3",
|
924 |
+
"safe-regex-test": "^1.0.0",
|
925 |
+
"string.prototype.trimend": "^1.0.5",
|
926 |
+
"string.prototype.trimstart": "^1.0.5",
|
927 |
+
"unbox-primitive": "^1.0.2"
|
928 |
+
}
|
929 |
+
},
|
930 |
+
"es-get-iterator": {
|
931 |
+
"version": "1.1.2",
|
932 |
+
"resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
|
933 |
+
"integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
|
934 |
+
"requires": {
|
935 |
+
"call-bind": "^1.0.2",
|
936 |
+
"get-intrinsic": "^1.1.0",
|
937 |
+
"has-symbols": "^1.0.1",
|
938 |
+
"is-arguments": "^1.1.0",
|
939 |
+
"is-map": "^2.0.2",
|
940 |
+
"is-set": "^2.0.2",
|
941 |
+
"is-string": "^1.0.5",
|
942 |
+
"isarray": "^2.0.5"
|
943 |
+
}
|
944 |
+
},
|
945 |
+
"es-to-primitive": {
|
946 |
+
"version": "1.2.1",
|
947 |
+
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
|
948 |
+
"integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
|
949 |
+
"requires": {
|
950 |
+
"is-callable": "^1.1.4",
|
951 |
+
"is-date-object": "^1.0.1",
|
952 |
+
"is-symbol": "^1.0.2"
|
953 |
+
}
|
954 |
+
},
|
955 |
+
"fontkit": {
|
956 |
+
"version": "1.9.0",
|
957 |
+
"resolved": "https://registry.npmjs.org/fontkit/-/fontkit-1.9.0.tgz",
|
958 |
+
"integrity": "sha512-HkW/8Lrk8jl18kzQHvAw9aTHe1cqsyx5sDnxncx652+CIfhawokEPkeM3BoIC+z/Xv7a0yMr0f3pRRwhGH455g==",
|
959 |
+
"requires": {
|
960 |
+
"@swc/helpers": "^0.3.13",
|
961 |
+
"brotli": "^1.3.2",
|
962 |
+
"clone": "^2.1.2",
|
963 |
+
"deep-equal": "^2.0.5",
|
964 |
+
"dfa": "^1.2.0",
|
965 |
+
"restructure": "^2.0.1",
|
966 |
+
"tiny-inflate": "^1.0.3",
|
967 |
+
"unicode-properties": "^1.3.1",
|
968 |
+
"unicode-trie": "^2.0.0"
|
969 |
+
}
|
970 |
+
},
|
971 |
+
"for-each": {
|
972 |
+
"version": "0.3.3",
|
973 |
+
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
|
974 |
+
"integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
|
975 |
+
"requires": {
|
976 |
+
"is-callable": "^1.1.3"
|
977 |
+
}
|
978 |
+
},
|
979 |
+
"function-bind": {
|
980 |
+
"version": "1.1.1",
|
981 |
+
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
982 |
+
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
|
983 |
+
},
|
984 |
+
"function.prototype.name": {
|
985 |
+
"version": "1.1.5",
|
986 |
+
"resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
|
987 |
+
"integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
|
988 |
+
"requires": {
|
989 |
+
"call-bind": "^1.0.2",
|
990 |
+
"define-properties": "^1.1.3",
|
991 |
+
"es-abstract": "^1.19.0",
|
992 |
+
"functions-have-names": "^1.2.2"
|
993 |
+
}
|
994 |
+
},
|
995 |
+
"functions-have-names": {
|
996 |
+
"version": "1.2.3",
|
997 |
+
"resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
|
998 |
+
"integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="
|
999 |
+
},
|
1000 |
+
"get-intrinsic": {
|
1001 |
+
"version": "1.1.3",
|
1002 |
+
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
|
1003 |
+
"integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
|
1004 |
+
"requires": {
|
1005 |
+
"function-bind": "^1.1.1",
|
1006 |
+
"has": "^1.0.3",
|
1007 |
+
"has-symbols": "^1.0.3"
|
1008 |
+
}
|
1009 |
+
},
|
1010 |
+
"get-symbol-description": {
|
1011 |
+
"version": "1.0.0",
|
1012 |
+
"resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
|
1013 |
+
"integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
|
1014 |
+
"requires": {
|
1015 |
+
"call-bind": "^1.0.2",
|
1016 |
+
"get-intrinsic": "^1.1.1"
|
1017 |
+
}
|
1018 |
+
},
|
1019 |
+
"has": {
|
1020 |
+
"version": "1.0.3",
|
1021 |
+
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
1022 |
+
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
1023 |
+
"requires": {
|
1024 |
+
"function-bind": "^1.1.1"
|
1025 |
+
}
|
1026 |
+
},
|
1027 |
+
"has-bigints": {
|
1028 |
+
"version": "1.0.2",
|
1029 |
+
"resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
|
1030 |
+
"integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ=="
|
1031 |
+
},
|
1032 |
+
"has-property-descriptors": {
|
1033 |
+
"version": "1.0.0",
|
1034 |
+
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
|
1035 |
+
"integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
|
1036 |
+
"requires": {
|
1037 |
+
"get-intrinsic": "^1.1.1"
|
1038 |
+
}
|
1039 |
+
},
|
1040 |
+
"has-symbols": {
|
1041 |
+
"version": "1.0.3",
|
1042 |
+
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
|
1043 |
+
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
|
1044 |
+
},
|
1045 |
+
"has-tostringtag": {
|
1046 |
+
"version": "1.0.0",
|
1047 |
+
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
|
1048 |
+
"integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
|
1049 |
+
"requires": {
|
1050 |
+
"has-symbols": "^1.0.2"
|
1051 |
+
}
|
1052 |
+
},
|
1053 |
+
"internal-slot": {
|
1054 |
+
"version": "1.0.3",
|
1055 |
+
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
|
1056 |
+
"integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
|
1057 |
+
"requires": {
|
1058 |
+
"get-intrinsic": "^1.1.0",
|
1059 |
+
"has": "^1.0.3",
|
1060 |
+
"side-channel": "^1.0.4"
|
1061 |
+
}
|
1062 |
+
},
|
1063 |
+
"is-arguments": {
|
1064 |
+
"version": "1.1.1",
|
1065 |
+
"resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
|
1066 |
+
"integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
|
1067 |
+
"requires": {
|
1068 |
+
"call-bind": "^1.0.2",
|
1069 |
+
"has-tostringtag": "^1.0.0"
|
1070 |
+
}
|
1071 |
+
},
|
1072 |
+
"is-bigint": {
|
1073 |
+
"version": "1.0.4",
|
1074 |
+
"resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
|
1075 |
+
"integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
|
1076 |
+
"requires": {
|
1077 |
+
"has-bigints": "^1.0.1"
|
1078 |
+
}
|
1079 |
+
},
|
1080 |
+
"is-boolean-object": {
|
1081 |
+
"version": "1.1.2",
|
1082 |
+
"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
|
1083 |
+
"integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
|
1084 |
+
"requires": {
|
1085 |
+
"call-bind": "^1.0.2",
|
1086 |
+
"has-tostringtag": "^1.0.0"
|
1087 |
+
}
|
1088 |
+
},
|
1089 |
+
"is-callable": {
|
1090 |
+
"version": "1.2.7",
|
1091 |
+
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
|
1092 |
+
"integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="
|
1093 |
+
},
|
1094 |
+
"is-date-object": {
|
1095 |
+
"version": "1.0.5",
|
1096 |
+
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
|
1097 |
+
"integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
|
1098 |
+
"requires": {
|
1099 |
+
"has-tostringtag": "^1.0.0"
|
1100 |
+
}
|
1101 |
+
},
|
1102 |
+
"is-map": {
|
1103 |
+
"version": "2.0.2",
|
1104 |
+
"resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
|
1105 |
+
"integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg=="
|
1106 |
+
},
|
1107 |
+
"is-negative-zero": {
|
1108 |
+
"version": "2.0.2",
|
1109 |
+
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
|
1110 |
+
"integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA=="
|
1111 |
+
},
|
1112 |
+
"is-number-object": {
|
1113 |
+
"version": "1.0.7",
|
1114 |
+
"resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
|
1115 |
+
"integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
|
1116 |
+
"requires": {
|
1117 |
+
"has-tostringtag": "^1.0.0"
|
1118 |
+
}
|
1119 |
+
},
|
1120 |
+
"is-regex": {
|
1121 |
+
"version": "1.1.4",
|
1122 |
+
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
|
1123 |
+
"integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
|
1124 |
+
"requires": {
|
1125 |
+
"call-bind": "^1.0.2",
|
1126 |
+
"has-tostringtag": "^1.0.0"
|
1127 |
+
}
|
1128 |
+
},
|
1129 |
+
"is-set": {
|
1130 |
+
"version": "2.0.2",
|
1131 |
+
"resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
|
1132 |
+
"integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g=="
|
1133 |
+
},
|
1134 |
+
"is-shared-array-buffer": {
|
1135 |
+
"version": "1.0.2",
|
1136 |
+
"resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
|
1137 |
+
"integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
|
1138 |
+
"requires": {
|
1139 |
+
"call-bind": "^1.0.2"
|
1140 |
+
}
|
1141 |
+
},
|
1142 |
+
"is-string": {
|
1143 |
+
"version": "1.0.7",
|
1144 |
+
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
|
1145 |
+
"integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
|
1146 |
+
"requires": {
|
1147 |
+
"has-tostringtag": "^1.0.0"
|
1148 |
+
}
|
1149 |
+
},
|
1150 |
+
"is-symbol": {
|
1151 |
+
"version": "1.0.4",
|
1152 |
+
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
|
1153 |
+
"integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
|
1154 |
+
"requires": {
|
1155 |
+
"has-symbols": "^1.0.2"
|
1156 |
+
}
|
1157 |
+
},
|
1158 |
+
"is-typed-array": {
|
1159 |
+
"version": "1.1.9",
|
1160 |
+
"resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz",
|
1161 |
+
"integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==",
|
1162 |
+
"requires": {
|
1163 |
+
"available-typed-arrays": "^1.0.5",
|
1164 |
+
"call-bind": "^1.0.2",
|
1165 |
+
"es-abstract": "^1.20.0",
|
1166 |
+
"for-each": "^0.3.3",
|
1167 |
+
"has-tostringtag": "^1.0.0"
|
1168 |
+
}
|
1169 |
+
},
|
1170 |
+
"is-weakmap": {
|
1171 |
+
"version": "2.0.1",
|
1172 |
+
"resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
|
1173 |
+
"integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA=="
|
1174 |
+
},
|
1175 |
+
"is-weakref": {
|
1176 |
+
"version": "1.0.2",
|
1177 |
+
"resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
|
1178 |
+
"integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
|
1179 |
+
"requires": {
|
1180 |
+
"call-bind": "^1.0.2"
|
1181 |
+
}
|
1182 |
+
},
|
1183 |
+
"is-weakset": {
|
1184 |
+
"version": "2.0.2",
|
1185 |
+
"resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
|
1186 |
+
"integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
|
1187 |
+
"requires": {
|
1188 |
+
"call-bind": "^1.0.2",
|
1189 |
+
"get-intrinsic": "^1.1.1"
|
1190 |
+
}
|
1191 |
+
},
|
1192 |
+
"isarray": {
|
1193 |
+
"version": "2.0.5",
|
1194 |
+
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
|
1195 |
+
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
|
1196 |
+
},
|
1197 |
+
"linebreak": {
|
1198 |
+
"version": "1.1.0",
|
1199 |
+
"resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz",
|
1200 |
+
"integrity": "sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==",
|
1201 |
+
"requires": {
|
1202 |
+
"base64-js": "0.0.8",
|
1203 |
+
"unicode-trie": "^2.0.0"
|
1204 |
+
},
|
1205 |
+
"dependencies": {
|
1206 |
+
"base64-js": {
|
1207 |
+
"version": "0.0.8",
|
1208 |
+
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz",
|
1209 |
+
"integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw=="
|
1210 |
+
}
|
1211 |
+
}
|
1212 |
+
},
|
1213 |
+
"object-inspect": {
|
1214 |
+
"version": "1.12.2",
|
1215 |
+
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
|
1216 |
+
"integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
|
1217 |
+
},
|
1218 |
+
"object-is": {
|
1219 |
+
"version": "1.1.5",
|
1220 |
+
"resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
|
1221 |
+
"integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
|
1222 |
+
"requires": {
|
1223 |
+
"call-bind": "^1.0.2",
|
1224 |
+
"define-properties": "^1.1.3"
|
1225 |
+
}
|
1226 |
+
},
|
1227 |
+
"object-keys": {
|
1228 |
+
"version": "1.1.1",
|
1229 |
+
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
|
1230 |
+
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
|
1231 |
+
},
|
1232 |
+
"object.assign": {
|
1233 |
+
"version": "4.1.4",
|
1234 |
+
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
|
1235 |
+
"integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
|
1236 |
+
"requires": {
|
1237 |
+
"call-bind": "^1.0.2",
|
1238 |
+
"define-properties": "^1.1.4",
|
1239 |
+
"has-symbols": "^1.0.3",
|
1240 |
+
"object-keys": "^1.1.1"
|
1241 |
+
}
|
1242 |
+
},
|
1243 |
+
"pako": {
|
1244 |
+
"version": "0.2.9",
|
1245 |
+
"resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
|
1246 |
+
"integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="
|
1247 |
+
},
|
1248 |
+
"pdfkit": {
|
1249 |
+
"version": "0.13.0",
|
1250 |
+
"resolved": "https://registry.npmjs.org/pdfkit/-/pdfkit-0.13.0.tgz",
|
1251 |
+
"integrity": "sha512-AW79eHU5eLd2vgRDS9z3bSoi0FA+gYm+100LLosrQQMLUzOBGVOhG7ABcMFpJu7Bpg+MT74XYHi4k9EuU/9EZw==",
|
1252 |
+
"requires": {
|
1253 |
+
"crypto-js": "^4.0.0",
|
1254 |
+
"fontkit": "^1.8.1",
|
1255 |
+
"linebreak": "^1.0.2",
|
1256 |
+
"png-js": "^1.0.0"
|
1257 |
+
}
|
1258 |
+
},
|
1259 |
+
"png-js": {
|
1260 |
+
"version": "1.0.0",
|
1261 |
+
"resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz",
|
1262 |
+
"integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g=="
|
1263 |
+
},
|
1264 |
+
"regexp.prototype.flags": {
|
1265 |
+
"version": "1.4.3",
|
1266 |
+
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
|
1267 |
+
"integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
|
1268 |
+
"requires": {
|
1269 |
+
"call-bind": "^1.0.2",
|
1270 |
+
"define-properties": "^1.1.3",
|
1271 |
+
"functions-have-names": "^1.2.2"
|
1272 |
+
}
|
1273 |
+
},
|
1274 |
+
"restructure": {
|
1275 |
+
"version": "2.0.1",
|
1276 |
+
"resolved": "https://registry.npmjs.org/restructure/-/restructure-2.0.1.tgz",
|
1277 |
+
"integrity": "sha512-e0dOpjm5DseomnXx2M5lpdZ5zoHqF1+bqdMJUohoYVVQa7cBdnk7fdmeI6byNWP/kiME72EeTiSypTCVnpLiDg=="
|
1278 |
+
},
|
1279 |
+
"safe-regex-test": {
|
1280 |
+
"version": "1.0.0",
|
1281 |
+
"resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
|
1282 |
+
"integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
|
1283 |
+
"requires": {
|
1284 |
+
"call-bind": "^1.0.2",
|
1285 |
+
"get-intrinsic": "^1.1.3",
|
1286 |
+
"is-regex": "^1.1.4"
|
1287 |
+
}
|
1288 |
+
},
|
1289 |
+
"side-channel": {
|
1290 |
+
"version": "1.0.4",
|
1291 |
+
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
|
1292 |
+
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
|
1293 |
+
"requires": {
|
1294 |
+
"call-bind": "^1.0.0",
|
1295 |
+
"get-intrinsic": "^1.0.2",
|
1296 |
+
"object-inspect": "^1.9.0"
|
1297 |
+
}
|
1298 |
+
},
|
1299 |
+
"string.prototype.trimend": {
|
1300 |
+
"version": "1.0.5",
|
1301 |
+
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz",
|
1302 |
+
"integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==",
|
1303 |
+
"requires": {
|
1304 |
+
"call-bind": "^1.0.2",
|
1305 |
+
"define-properties": "^1.1.4",
|
1306 |
+
"es-abstract": "^1.19.5"
|
1307 |
+
}
|
1308 |
+
},
|
1309 |
+
"string.prototype.trimstart": {
|
1310 |
+
"version": "1.0.5",
|
1311 |
+
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz",
|
1312 |
+
"integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==",
|
1313 |
+
"requires": {
|
1314 |
+
"call-bind": "^1.0.2",
|
1315 |
+
"define-properties": "^1.1.4",
|
1316 |
+
"es-abstract": "^1.19.5"
|
1317 |
+
}
|
1318 |
+
},
|
1319 |
+
"tiny-inflate": {
|
1320 |
+
"version": "1.0.3",
|
1321 |
+
"resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
|
1322 |
+
"integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="
|
1323 |
+
},
|
1324 |
+
"tslib": {
|
1325 |
+
"version": "2.4.0",
|
1326 |
+
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
|
1327 |
+
"integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
|
1328 |
+
},
|
1329 |
+
"unbox-primitive": {
|
1330 |
+
"version": "1.0.2",
|
1331 |
+
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
|
1332 |
+
"integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
|
1333 |
+
"requires": {
|
1334 |
+
"call-bind": "^1.0.2",
|
1335 |
+
"has-bigints": "^1.0.2",
|
1336 |
+
"has-symbols": "^1.0.3",
|
1337 |
+
"which-boxed-primitive": "^1.0.2"
|
1338 |
+
}
|
1339 |
+
},
|
1340 |
+
"unicode-properties": {
|
1341 |
+
"version": "1.4.1",
|
1342 |
+
"resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz",
|
1343 |
+
"integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==",
|
1344 |
+
"requires": {
|
1345 |
+
"base64-js": "^1.3.0",
|
1346 |
+
"unicode-trie": "^2.0.0"
|
1347 |
+
}
|
1348 |
+
},
|
1349 |
+
"unicode-trie": {
|
1350 |
+
"version": "2.0.0",
|
1351 |
+
"resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz",
|
1352 |
+
"integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==",
|
1353 |
+
"requires": {
|
1354 |
+
"pako": "^0.2.5",
|
1355 |
+
"tiny-inflate": "^1.0.0"
|
1356 |
+
}
|
1357 |
+
},
|
1358 |
+
"which-boxed-primitive": {
|
1359 |
+
"version": "1.0.2",
|
1360 |
+
"resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
|
1361 |
+
"integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
|
1362 |
+
"requires": {
|
1363 |
+
"is-bigint": "^1.0.1",
|
1364 |
+
"is-boolean-object": "^1.1.0",
|
1365 |
+
"is-number-object": "^1.0.4",
|
1366 |
+
"is-string": "^1.0.5",
|
1367 |
+
"is-symbol": "^1.0.3"
|
1368 |
+
}
|
1369 |
+
},
|
1370 |
+
"which-collection": {
|
1371 |
+
"version": "1.0.1",
|
1372 |
+
"resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
|
1373 |
+
"integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
|
1374 |
+
"requires": {
|
1375 |
+
"is-map": "^2.0.1",
|
1376 |
+
"is-set": "^2.0.1",
|
1377 |
+
"is-weakmap": "^2.0.1",
|
1378 |
+
"is-weakset": "^2.0.1"
|
1379 |
+
}
|
1380 |
+
},
|
1381 |
+
"which-typed-array": {
|
1382 |
+
"version": "1.1.8",
|
1383 |
+
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz",
|
1384 |
+
"integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==",
|
1385 |
+
"requires": {
|
1386 |
+
"available-typed-arrays": "^1.0.5",
|
1387 |
+
"call-bind": "^1.0.2",
|
1388 |
+
"es-abstract": "^1.20.0",
|
1389 |
+
"for-each": "^0.3.3",
|
1390 |
+
"has-tostringtag": "^1.0.0",
|
1391 |
+
"is-typed-array": "^1.1.9"
|
1392 |
+
}
|
1393 |
+
}
|
1394 |
+
}
|
1395 |
+
}
|
pdfkit-invoice/package.json
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "pdfkit-invoice",
|
3 |
+
"version": "1.0.0",
|
4 |
+
"description": "",
|
5 |
+
"main": "index.js",
|
6 |
+
"scripts": {
|
7 |
+
"start": "node index.js",
|
8 |
+
"test": "echo \"Error: no test specified\" && exit 1"
|
9 |
+
},
|
10 |
+
"keywords": [],
|
11 |
+
"author": "",
|
12 |
+
"license": "ISC",
|
13 |
+
"dependencies": {
|
14 |
+
"pdfkit": "^0.13.0"
|
15 |
+
}
|
16 |
+
}
|
pdfkit-invoice/screenshot.png
ADDED
![]() |
pillmatePPTXBackground.webp
ADDED
![]() |
real_promises_only.py
ADDED
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# promises detector fine tuning for llama2-7B
|
2 |
+
from datasets import load_dataset
|
3 |
+
from accelerate import find_executable_batch_size # 8 is the recommended from the book
|
4 |
+
from transformers import TrainingArguments, BitsAndBytesConfig
|
5 |
+
from transformers import LlamaForCausalLM, LlamaTokenizer
|
6 |
+
from peft import PeftModel, LoraConfig
|
7 |
+
from trl import SFTTrainer
|
8 |
+
|
9 |
+
|
10 |
+
tune_data = load_dataset("csv", data_files='Political_Promises_Fine_Tuning.csv')
|
11 |
+
|
12 |
+
optim = "paged_adamw_32bit"
|
13 |
+
learning_rate = 3e-4
|
14 |
+
weight_decay = .01
|
15 |
+
lr_scheduler_type = 'cosine'
|
16 |
+
warmup_ratio = .03 # The proportion of training steps
|
17 |
+
|
18 |
+
# on a 16GB GPU the params are:
|
19 |
+
gradient_accumulation_steps = 4
|
20 |
+
bf16 = True
|
21 |
+
gradient_checkpointing = True
|
22 |
+
|
23 |
+
# Label smoothing
|
24 |
+
# Label 0 will be transformed to label_smoothing_factor/num_labels
|
25 |
+
# Label 1 will be transformed to 1 + label_smoothing_factor(-1 + 1/ num_labels)
|
26 |
+
|
27 |
+
label_smoothing_factor = .1
|
28 |
+
# neftune stands for Noise Embedding Instruction Fine-Tuning (noise ~U(-1,1))
|
29 |
+
neftune_noise_alpha = 5
|
30 |
+
|
31 |
+
# batch-size (the bigger, the faster and more memory heavy and prone to local minima/overfitting)
|
32 |
+
# Tip: Reduce max_seq_len to support larger batch_size
|
33 |
+
per_device_train_batch_size = find_executable_batch_size()
|
34 |
+
per_device_eval_batch_size = find_executable_batch_size()
|
35 |
+
|
36 |
+
max_grad_norm = 2
|
37 |
+
group_by_length = True
|
38 |
+
max_train_epochs = 3
|
39 |
+
|
40 |
+
# peft = parameter efficient fine tuning
|
41 |
+
# LORA:
|
42 |
+
r = 64
|
43 |
+
lora_alpha = 8
|
44 |
+
lora_dropout = 0.1
|
45 |
+
|
46 |
+
# Working with reduced precision with bitsandbytes
|
47 |
+
use_4bit = True
|
48 |
+
bnb_4bit_compute_dtype = 'float16'
|
49 |
+
bnb_4bit_quant_type = 'nf4'
|
50 |
+
use_nested_quant = False
|
51 |
+
|
52 |
+
# trl = Transformer Reinforcement Learning, for supervised fine-tuning
|
53 |
+
max_seq_length = 128
|
54 |
+
# Packing is used to place multiple instructions in the same input sequence
|
55 |
+
|
56 |
+
packing = True
|
57 |
+
|
58 |
+
train_params = TrainingArguments(
|
59 |
+
optim=optim,
|
60 |
+
learning_rate=learning_rate,
|
61 |
+
weight_decay=weight_decay,
|
62 |
+
warmup_ratio=warmup_ratio,
|
63 |
+
gradient_accumulation_steps=gradient_accumulation_steps,
|
64 |
+
bf16=bf16,
|
65 |
+
gradient_checkpointing=gradient_checkpointing,
|
66 |
+
label_smoothing_factor=label_smoothing_factor,
|
67 |
+
neftune_noise_alpha=neftune_noise_alpha,
|
68 |
+
per_device_train_batch_size=per_device_train_batch_size,
|
69 |
+
per_device_eval_batch_size=per_device_eval_batch_size,
|
70 |
+
max_grad_norm=max_grad_norm,
|
71 |
+
group_by_length=group_by_length,
|
72 |
+
num_train_epochs=max_train_epochs,
|
73 |
+
output_dir='./model_outputs',
|
74 |
+
save_steps=50,
|
75 |
+
logging_steps=10
|
76 |
+
)
|
77 |
+
|
78 |
+
quantize_params = BitsAndBytesConfig(
|
79 |
+
use_4bit=use_4bit,
|
80 |
+
bnb_4bit_compute_dtype=bnb_4bit_compute_dtype,
|
81 |
+
bnb_4bit_quant_type=bnb_4bit_quant_type,
|
82 |
+
use_nested_quant=use_nested_quant,
|
83 |
+
)
|
84 |
+
|
85 |
+
|
86 |
+
lora_params = LoraConfig (
|
87 |
+
r = 64,
|
88 |
+
lora_alpha = 8,
|
89 |
+
lora_dropout = 0.1
|
90 |
+
)
|
91 |
+
|
92 |
+
model = LlamaForCausalLM.from_pretrained(
|
93 |
+
pretrained_model_name_or_path = 'meta-llama/Llama-2-7b',
|
94 |
+
quantization_config=quantize_params,
|
95 |
+
device_map='auto'
|
96 |
+
)
|
97 |
+
|
98 |
+
tokenizer = LlamaTokenizer.from_pretrained('meta-llama/Llama-2-7b')
|
99 |
+
|
100 |
+
tune_data = load_dataset("csv", data_files='/path/to/finetune_data.csv')
|
101 |
+
|
102 |
+
sft = SFTTrainer (
|
103 |
+
model = model,
|
104 |
+
args = train_params,
|
105 |
+
train_dataset = tune_data,
|
106 |
+
tokenizer = tokenizer
|
107 |
+
peft_config = lora_params,
|
108 |
+
max_seq_length = 128,
|
109 |
+
dataset_text_field = 'text',
|
110 |
+
packing = True
|
111 |
+
)
|
112 |
+
|
113 |
+
sft.train()
|
114 |
+
sft.model.save_pretrained('/path/to/llama-2-it.csv')
|
report.md
ADDED
File without changes
|
utils.py
ADDED
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from langchain_openai import OpenAI
|
2 |
+
from pypdf import PdfReader
|
3 |
+
import pandas as pd
|
4 |
+
import re
|
5 |
+
import replicate
|
6 |
+
from langchain.prompts import PromptTemplate
|
7 |
+
|
8 |
+
|
9 |
+
def get_pdf_text(pdf_doc):
|
10 |
+
text = ''
|
11 |
+
pdf_reader = PdfReader(pdf_doc)
|
12 |
+
for page in pdf_reader.pages:
|
13 |
+
text += page.extract_text()
|
14 |
+
return text
|
15 |
+
|
16 |
+
|
17 |
+
def extracted_data(pages_data):
|
18 |
+
template = """Extract all the following values : invoice no. Description, Quantinty, data, Unit price, Amount, Total
|
19 |
+
email, phone number and address from this data: {pages}
|
20 |
+
|
21 |
+
Expected output: remove any dollar symbols {{'Invoice no.': '1001329', 'Description': 'Office Chair', 'Quantity': '2', 'Date': '5/4/2018', 'Unit price': '100', 'Amount': '20', 'Total': '12020' and so on}}"""
|
22 |
+
|
23 |
+
prompt_template = PromptTemplate(input_variables=["pages"], template=template)
|
24 |
+
|
25 |
+
llm = OpenAI(temperature=.7)
|
26 |
+
full_response = llm(prompt_template.format(pages=pages_data))
|
27 |
+
|
28 |
+
# input_prompt = {
|
29 |
+
# "top_p": .9,
|
30 |
+
# "prompt": prompt_template.format(pages=pages_data),
|
31 |
+
# "temperature": .1,
|
32 |
+
# "max_new_tokens": 500
|
33 |
+
# }
|
34 |
+
# full_response = ''
|
35 |
+
# for event in replicate.stream("meta/llama-2-70b-chat", input=input_prompt):
|
36 |
+
# full_response += event
|
37 |
+
|
38 |
+
return full_response
|
39 |
+
|
40 |
+
|
41 |
+
def create_docs(user_pdf_list):
|
42 |
+
"""Iterate over files in that user uploaded PDF files, one by one"""
|
43 |
+
print("Started creating docs")
|
44 |
+
df = pd.DataFrame({"Invoice no.": pd.Series(dtype='str'),
|
45 |
+
"Description": pd.Series(dtype='str'),
|
46 |
+
"Quantinty": pd.Series(dtype='str'),
|
47 |
+
"Date": pd.Series(dtype='str'),
|
48 |
+
"Unit price": pd.Series(dtype='str'),
|
49 |
+
"Amount": pd.Series(dtype='int'),
|
50 |
+
"Total": pd.Series(dtype='str'),
|
51 |
+
"Email": pd.Series(dtype='str'),
|
52 |
+
"Phone number": pd.Series(dtype='str'),
|
53 |
+
"Address": pd.Series(dtype='str')})
|
54 |
+
|
55 |
+
for filename in user_pdf_list:
|
56 |
+
print('filename is {}'.format(filename))
|
57 |
+
raw_data = get_pdf_text(filename)
|
58 |
+
print('raw_data is {}'.format(raw_data))
|
59 |
+
|
60 |
+
llm_extracted_data = extracted_data(raw_data)
|
61 |
+
print('llm_extracted_data is {}'.format(llm_extracted_data))
|
62 |
+
|
63 |
+
# Capturing just the required data and excluding andy unwanted test from the LLM response
|
64 |
+
pattern = r'{(.+)}'
|
65 |
+
match = re.search(pattern, llm_extracted_data, re.DOTALL)
|
66 |
+
|
67 |
+
if match:
|
68 |
+
extracted_text = match.group(1)
|
69 |
+
# Converting the extracted text to a dictionary
|
70 |
+
data_dict = eval('{' + extracted_text + '}')
|
71 |
+
print('data_dict is {}'.format(data_dict))
|
72 |
+
else:
|
73 |
+
print("No match found.")
|
74 |
+
new_row = pd.DataFrame([data_dict]) # Creating a DataFrame from the dictionary
|
75 |
+
df = pd.concat([df, new_row], ignore_index=True) # Concatenating the new row
|
76 |
+
print('*' * 10 + 'DONE' + '*' * 10)
|
77 |
+
|
78 |
+
df.head()
|
79 |
+
return df
|