├── .changeset
├── README.md
└── config.json
├── .editorconfig
├── .github
└── workflows
│ ├── pr.yml
│ └── release.yml
├── .gitignore
├── .prettierrc
├── CHANGELOG.md
├── LICENSE
├── README.md
├── example
├── node
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ │ └── main.ts
│ └── tsconfig.json
└── web
│ ├── index.html
│ ├── package.json
│ ├── pnpm-lock.yaml
│ ├── src
│ └── main.ts
│ └── vite.config.js
├── package.json
├── pnpm-lock.yaml
├── src
├── interfaces.ts
├── lib
│ ├── decoder.ts
│ ├── model.ts
│ └── processor.ts
├── node
│ ├── Gliner.ts
│ ├── ONNXNodeWrapper.ts
│ └── index.ts
├── types.d.ts
└── web
│ ├── Gliner.ts
│ ├── ONNXWebWrapper.ts
│ └── index.ts
├── tsconfig.json
└── tsup.config.ts
/.changeset/README.md:
--------------------------------------------------------------------------------
1 | # Changesets
2 |
3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
4 | with multi-package repos, or single-package repos to help you version and publish your code. You can
5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets)
6 |
7 | We have a quick list of common questions to get you started engaging with this project in
8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
9 |
--------------------------------------------------------------------------------
/.changeset/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://unpkg.com/@changesets/config@3.0.3/schema.json",
3 | "changelog": "@changesets/cli/changelog",
4 | "commit": false,
5 | "fixed": [],
6 | "linked": [],
7 | "access": "restricted",
8 | "baseBranch": "main",
9 | "updateInternalDependencies": "patch",
10 | "ignore": []
11 | }
12 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = space
5 | indent_size = 2
6 | end_of_line = lf
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 | insert_final_newline = true
10 |
--------------------------------------------------------------------------------
/.github/workflows/pr.yml:
--------------------------------------------------------------------------------
1 | name: "PR Workflow"
2 |
3 | on:
4 | pull_request:
5 | branches:
6 | - main
7 |
8 | jobs:
9 | build:
10 | runs-on: ubuntu-latest
11 | steps:
12 | # Checkout the code
13 | - name: Checkout Code
14 | uses: actions/checkout@v3
15 |
16 | # Set up Node.js
17 | - name: Set Up Node.js
18 | uses: actions/setup-node@v3
19 | with:
20 | node-version: 18
21 |
22 | # Set up pnpm
23 | - name: Set Up pnpm
24 | uses: pnpm/action-setup@v2
25 | with:
26 | version: 6.0.2
27 |
28 | # Install dependencies
29 | - name: Install Dependencies with pnpm
30 | run: pnpm install
31 |
32 | # Run tests
33 | - name: Run Tests
34 | run: pnpm test
35 |
36 | # Lint the code
37 | - name: Lint Code
38 | run: pnpm run lint
39 |
40 | # Build the project
41 | - name: Build Project
42 | run: pnpm run build
43 |
44 | # Check for pending changesets before running further tests and version checks
45 | - name: Check for Changesets
46 | id: check_changesets
47 | run: |
48 | if pnpm changeset status | grep -q "No unreleased changesets"; then
49 | echo "No unreleased changesets found, create a changeset using pnpm changeset."
50 | exit 1
51 | else
52 | echo "Changesets found, version bump possible."
53 | exit 0
54 | fi
55 | continue-on-error: false
56 |
--------------------------------------------------------------------------------
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | name: Release
2 |
3 | on:
4 | push:
5 | branches:
6 | - main # Trigger only on pushes to the main branch
7 |
8 | workflow_dispatch: # Allows manually triggering the workflow for testing or urgent releases
9 |
10 | concurrency: ${{ github.workflow }}-${{ github.ref }}
11 |
12 | jobs:
13 | release:
14 | if: github.repository == 'Ingvarstep/GLiNER.js'
15 | permissions:
16 | contents: write # Required to create the release
17 | actions: read # For checking token permissions
18 | issues: write # For creating an issue
19 | name: Create GitHub Release and Publish to npm
20 | runs-on: ubuntu-latest
21 |
22 | steps:
23 | # Set NPM Registry to ensure the correct registry is used
24 | - name: Set NPM Registry
25 | run:
26 | npm config set registry https://registry.npmjs.org/
27 |
28 | # Set NPM registry and authentication token via .npmrc
29 | - name: Create .npmrc file with auth token
30 | run: |
31 | echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
32 |
33 | # Verify NPM Authentication
34 | - name: Verify NPM Authentication
35 | run: npm whoami
36 | env:
37 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
38 |
39 | # Checkout the code
40 | - name: Checkout code
41 | uses: actions/checkout@v3
42 |
43 | # Set up Node.js
44 | - name: Set up Node.js
45 | uses: actions/setup-node@v3
46 | with:
47 | node-version: 18
48 |
49 | # Set up pnpm
50 | - name: Set up pnpm
51 | uses: pnpm/action-setup@v2
52 | with:
53 | version: 6.0.2
54 |
55 | # Install dependencies
56 | - name: Install dependencies
57 | run: pnpm install
58 |
59 | # Check for pending changesets before proceeding with the release
60 | - name: Check for changesets
61 | id: check_changesets
62 | run: |
63 | if pnpm changeset status | grep -q "No unreleased changesets"; then
64 | echo "No unreleased changesets found. Skipping version bump and release."
65 | exit 0
66 | fi
67 | continue-on-error: false # If no changesets are found, this step will stop the workflow
68 |
69 | # Run Changesets to version the packages and apply changelogs
70 | - name: Run Changesets version
71 | if: steps.check_changesets.outcome == 'success'
72 | run: pnpm changeset version
73 |
74 | # Commit the version bump and changelog updates (if applicable)
75 | - name: Commit version bump
76 | if: steps.check_changesets.outcome == 'success'
77 | run: |
78 | git config --global user.name "GitHub Actions"
79 | git config --global user.email "actions@github.com"
80 | git add .
81 | git commit -m "Version bump and changelog update"
82 | git push
83 |
84 | # Extract package name and version from package.json
85 | - name: Get name and version from package.json
86 | id: get_package_info
87 | run: |
88 | NAME=$(jq -r '.name' package.json)
89 | VERSION=$(jq -r '.version' package.json)
90 | echo "PACKAGE_NAME=$NAME" >> $GITHUB_ENV
91 | echo "PACKAGE_VERSION=$VERSION" >> $GITHUB_ENV
92 |
93 | # Create a new Git tag based on the version from package.json
94 | - name: Create Tag
95 | if: steps.check_changesets.outcome == 'success'
96 | run: |
97 | git tag v${{ env.PACKAGE_VERSION }}
98 | git push origin v${{ env.PACKAGE_VERSION }}
99 |
100 | # Build the package (after version bump)
101 | - name: Build the package
102 | if: steps.check_changesets.outcome == 'success'
103 | run: pnpm run build # Ensure you have a build script in your package.json
104 |
105 | # Create release archives (zip and gzip)
106 | - name: Create source code archives
107 | if: steps.check_changesets.outcome == 'success'
108 | run: |
109 | zip -r ${{ env.PACKAGE_NAME }}-${{ env.PACKAGE_VERSION }}.zip dist package.json src README.md CHANGELOG.md
110 | tar -czvf ${{ env.PACKAGE_NAME }}-${{ env.PACKAGE_VERSION }}.tar.gz dist package.json src README.md CHANGELOG.md
111 |
112 | # Create GitHub Release and Upload Release Assets (with display name "Source Code")
113 | - name: Create GitHub Release and Upload Assets
114 | if: steps.check_changesets.outcome == 'success'
115 | uses: softprops/action-gh-release@v1
116 | with:
117 | tag_name: v${{ env.PACKAGE_VERSION }} # Use the tag created in the previous step
118 | name: ${{ env.PACKAGE_VERSION }} # Use the version as the release name
119 | files: |
120 | ${{ env.PACKAGE_NAME }}-${{ env.PACKAGE_VERSION }}.zip#Source Code
121 | ${{ env.PACKAGE_NAME }}-${{ env.PACKAGE_VERSION }}.tar.gz#Source Code
122 | env:
123 | GITHUB_TOKEN:
124 | ${{ secrets.GITHUB_TOKEN }} # GitHub token for authentication
125 |
126 |
127 | # Set the NPM authentication token using pnpm
128 | - name: Set NPM Auth Token
129 | run: pnpm config set //registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}
130 |
131 | # Publish to npm (activated)
132 | - name: Publish to npm
133 | if: steps.check_changesets.outcome == 'success'
134 | run: pnpm publish --access public
135 | env:
136 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} # Use NPM token for publishing
137 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.onnx
2 |
3 | # Logs
4 | logs
5 | *.log
6 | npm-debug.log*
7 | yarn-debug.log*
8 | yarn-error.log*
9 | pnpm-debug.log*
10 | lerna-debug.log*
11 |
12 | node_modules
13 | dist
14 | dist-ssr
15 | *.local
16 |
17 | # Editor directories and files
18 | .vscode/*
19 | !.vscode/extensions.json
20 | .idea
21 | .DS_Store
22 | *.suo
23 | *.ntvs*
24 | *.njsproj
25 | *.sln
26 | *.sw?
27 |
28 | *.tar.gz
29 | *.zip
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "printWidth": 100,
3 | "tabWidth": 2,
4 | "useTabs": false,
5 | "semi": true,
6 | "singleQuote": false,
7 | "trailingComma": "all",
8 | "bracketSpacing": true,
9 | "endOfLine": "lf"
10 | }
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # gliner
2 |
3 | ## 0.0.19
4 |
5 | ### Patch Changes
6 |
7 | - 4528498: Fixate onnx versions for stability
8 |
9 | ## 0.0.18
10 |
11 | ### Patch Changes
12 |
13 | - f9d1180: added node support
14 |
15 | ## 0.0.17
16 |
17 | ### Patch Changes
18 |
19 | - 4265f9f: removed node.js support, too many errors at the moment
20 |
21 | ## 0.0.16
22 |
23 | ### Patch Changes
24 |
25 | - bf6a8e2: small refactor of onnx, add onnx settings readme, add node support(untested)
26 |
27 | ## 0.0.15
28 |
29 | ### Patch Changes
30 |
31 | - f37768e: exporting whitespace token splitter
32 |
33 | ## 0.0.14
34 |
35 | ### Patch Changes
36 |
37 | - 0c5d792: chunking, speed optimizations, better interfaces, text span
38 |
39 | ## 0.0.13
40 |
41 | ### Patch Changes
42 |
43 | - e843ca8: debug
44 |
45 | ## 0.0.12
46 |
47 | ### Patch Changes
48 |
49 | - 4485b26: debug
50 |
51 | ## 0.0.11
52 |
53 | ### Patch Changes
54 |
55 | - c76ef5a: debug
56 |
57 | ## 0.0.10
58 |
59 | ### Patch Changes
60 |
61 | - c77546b: debug github action
62 | - 2e0b65e: debug
63 |
64 | ## 0.0.9
65 |
66 | ### Patch Changes
67 |
68 | - 19fd347: debug
69 |
70 | ## 0.0.8
71 |
72 | ### Patch Changes
73 |
74 | - 4c69aea: debug
75 |
76 | ## 0.0.7
77 |
78 | ### Patch Changes
79 |
80 | - c5bfd67: release file has version number
81 |
82 | ## 0.0.6
83 |
84 | ### Patch Changes
85 |
86 | - 6840b38: using package.json version for gittag
87 |
88 | ## 0.0.5
89 |
90 | ### Patch Changes
91 |
92 | - d3f7bc7: now using gittags
93 |
94 | ## 0.0.4
95 |
96 | ### Patch Changes
97 |
98 | - 6b7b6db: fix github action
99 |
100 | ## 0.0.3
101 |
102 | ### Patch Changes
103 |
104 | - 8c71fa7: Library Setup
105 |
106 | ## 0.0.2
107 |
108 | ### Patch Changes
109 |
110 | - library setup
111 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 👑 GLiNER.js: Generalist and Lightweight Named Entity Recognition for JavaScript
2 |
3 | GLiNER.js is a TypeScript-based inference engine for running GLiNER (Generalist and Lightweight Named Entity Recognition) models. GLiNER can identify any entity type using a bidirectional transformer encoder, offering a practical alternative to traditional NER models and large language models.
4 |
5 |
6 | 📄 Paper
7 | •
8 | 📢 Discord
9 | •
10 | 🤗 Demo
11 | •
12 | 🤗 Available models
13 | •
14 | 🧬 Official Repo
15 |
16 |
17 | ## 🌟 Key Features
18 |
19 | - Flexible entity recognition without predefined categories
20 | - Lightweight and fast inference
21 | - Easy integration with web applications
22 | - TypeScript support for better developer experience
23 |
24 | ## 🚀 Getting Started
25 |
26 | ### Installation
27 |
28 | ```bash
29 | npm install gliner
30 | ```
31 |
32 | ### Basic Usage
33 |
34 | ```javascript
35 | const gliner = new Gliner({
36 | tokenizerPath: "onnx-community/gliner_small-v2",
37 | onnxSettings: {
38 | modelPath: "public/model.onnx", // Can be a string path or Uint8Array/ArrayBufferLike
39 | executionProvider: "webgpu", // Optional: "cpu", "wasm", "webgpu", or "webgl"
40 | wasmPaths: "path/to/wasm", // Optional: path to WASM binaries
41 | multiThread: true, // Optional: enable multi-threading (for wasm/cpu providers)
42 | maxThreads: 4, // Optional: specify number of threads (for wasm/cpu providers)
43 | fetchBinary: true, // Optional: prefetch binary from wasmPaths
44 | },
45 | transformersSettings: {
46 | // Optional
47 | allowLocalModels: true,
48 | useBrowserCache: true,
49 | },
50 | maxWidth: 12, // Optional
51 | modelType: "gliner", // Optional
52 | });
53 |
54 | await gliner.initialize();
55 |
56 | const texts = ["Your input text here"];
57 | const entities = ["city", "country", "person"];
58 | const options = {
59 | flatNer: false, // Optional
60 | threshold: 0.1, // Optional
61 | multiLabel: false, // Optional
62 | };
63 |
64 | const results = await gliner.inference({
65 | texts,
66 | entities,
67 | ...options,
68 | });
69 | console.log(results);
70 | ```
71 |
72 | ### Response Format
73 |
74 | The inference results will be returned in the following format:
75 |
76 | ```javascript
77 | // For a single text input:
78 | [
79 | {
80 | spanText: "New York", // The extracted entity text
81 | start: 10, // Start character position
82 | end: 18, // End character position
83 | label: "city", // Entity type
84 | score: 0.95, // Confidence score
85 | },
86 | // ... more entities
87 | ];
88 |
89 | // For multiple text inputs, you'll get an array of arrays
90 | ```
91 |
92 | ## 🛠 Setup & Model Preparation
93 |
94 | To use GLiNER models in a web environment, you need an ONNX format model. You can:
95 |
96 | 1. Search for pre-converted models on [HuggingFace](https://huggingface.co/onnx-community?search_models=gliner)
97 | 2. Convert a model yourself using the [official Python script](https://github.com/urchade/GLiNER/blob/main/convert_to_onnx.py)
98 |
99 | ### Converting to ONNX Format
100 |
101 | Use the `convert_to_onnx.py` script with the following arguments:
102 |
103 | - `model_path`: Location of the GLiNER model
104 | - `save_path`: Where to save the ONNX file
105 | - `quantize`: Set to True for IntU8 quantization (optional)
106 |
107 | Example:
108 |
109 | ```bash
110 | python convert_to_onnx.py --model_path /path/to/your/model --save_path /path/to/save/onnx --quantize True
111 | ```
112 |
113 | ## 🌟 Use Cases
114 |
115 | GLiNER.js offers versatile entity recognition capabilities across various domains:
116 |
117 | 1. **Enhanced Search Query Understanding**
118 | 2. **Real-time PII Detection**
119 | 3. **Intelligent Document Parsing**
120 | 4. **Content Summarization and Insight Extraction**
121 | 5. **Automated Content Tagging and Categorization**
122 | ...
123 |
124 | ## 🔧 Areas for Improvement
125 |
126 | - [ ] Further optimize inference speed
127 | - [ ] Add support for token-based GLiNER architecture
128 | - [ ] Implement bi-encoder GLiNER architecture for better scalability
129 | - [ ] Enable model training capabilities
130 | - [ ] Provide more usage examples
131 |
132 | ## Creating a PR
133 |
134 | - for any changes, remember to run `pnpm changeset`, otherwise there will not be a version bump and the PR Github Action will fail.
135 |
136 | ## 🙏 Acknowledgements
137 |
138 | - [GLiNER original authors](https://github.com/urchade/GLiNER)
139 | - [ONNX Runtime Web](https://github.com/microsoft/onnxruntime)
140 | - [Transformers.js](https://github.com/xenova/transformers.js)
141 |
142 | ## 📞 Support
143 |
144 | For questions and support, please join our [Discord community](https://discord.gg/ApZvyNZU) or open an issue on GitHub.
145 |
--------------------------------------------------------------------------------
/example/node/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "node",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "build": "tsc",
8 | "start": "node dist/main.js",
9 | "dev": "tsx src/main.ts"
10 | },
11 | "type": "module",
12 | "keywords": [],
13 | "author": "",
14 | "license": "ISC",
15 | "dependencies": {
16 | "gliner": "file:../../",
17 | "tsx": "^4.19.2"
18 | },
19 | "devDependencies": {
20 | "@types/node": "^22.7.5",
21 | "ts-node": "^10.9.2",
22 | "typescript": "^5.6.3"
23 | }
24 | }
--------------------------------------------------------------------------------
/example/node/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | gliner:
12 | specifier: file:../../
13 | version: file:../..(onnxruntime-node@1.19.2)
14 | tsx:
15 | specifier: ^4.19.2
16 | version: 4.19.2
17 | devDependencies:
18 | '@types/node':
19 | specifier: ^22.7.5
20 | version: 22.7.5
21 | ts-node:
22 | specifier: ^10.9.2
23 | version: 10.9.2(@types/node@22.7.5)(typescript@5.6.3)
24 | typescript:
25 | specifier: ^5.6.3
26 | version: 5.6.3
27 |
28 | packages:
29 |
30 | '@cspotcode/source-map-support@0.8.1':
31 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
32 | engines: {node: '>=12'}
33 |
34 | '@esbuild/aix-ppc64@0.23.1':
35 | resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==}
36 | engines: {node: '>=18'}
37 | cpu: [ppc64]
38 | os: [aix]
39 |
40 | '@esbuild/android-arm64@0.23.1':
41 | resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==}
42 | engines: {node: '>=18'}
43 | cpu: [arm64]
44 | os: [android]
45 |
46 | '@esbuild/android-arm@0.23.1':
47 | resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==}
48 | engines: {node: '>=18'}
49 | cpu: [arm]
50 | os: [android]
51 |
52 | '@esbuild/android-x64@0.23.1':
53 | resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==}
54 | engines: {node: '>=18'}
55 | cpu: [x64]
56 | os: [android]
57 |
58 | '@esbuild/darwin-arm64@0.23.1':
59 | resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==}
60 | engines: {node: '>=18'}
61 | cpu: [arm64]
62 | os: [darwin]
63 |
64 | '@esbuild/darwin-x64@0.23.1':
65 | resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==}
66 | engines: {node: '>=18'}
67 | cpu: [x64]
68 | os: [darwin]
69 |
70 | '@esbuild/freebsd-arm64@0.23.1':
71 | resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==}
72 | engines: {node: '>=18'}
73 | cpu: [arm64]
74 | os: [freebsd]
75 |
76 | '@esbuild/freebsd-x64@0.23.1':
77 | resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==}
78 | engines: {node: '>=18'}
79 | cpu: [x64]
80 | os: [freebsd]
81 |
82 | '@esbuild/linux-arm64@0.23.1':
83 | resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==}
84 | engines: {node: '>=18'}
85 | cpu: [arm64]
86 | os: [linux]
87 |
88 | '@esbuild/linux-arm@0.23.1':
89 | resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==}
90 | engines: {node: '>=18'}
91 | cpu: [arm]
92 | os: [linux]
93 |
94 | '@esbuild/linux-ia32@0.23.1':
95 | resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==}
96 | engines: {node: '>=18'}
97 | cpu: [ia32]
98 | os: [linux]
99 |
100 | '@esbuild/linux-loong64@0.23.1':
101 | resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==}
102 | engines: {node: '>=18'}
103 | cpu: [loong64]
104 | os: [linux]
105 |
106 | '@esbuild/linux-mips64el@0.23.1':
107 | resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==}
108 | engines: {node: '>=18'}
109 | cpu: [mips64el]
110 | os: [linux]
111 |
112 | '@esbuild/linux-ppc64@0.23.1':
113 | resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==}
114 | engines: {node: '>=18'}
115 | cpu: [ppc64]
116 | os: [linux]
117 |
118 | '@esbuild/linux-riscv64@0.23.1':
119 | resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==}
120 | engines: {node: '>=18'}
121 | cpu: [riscv64]
122 | os: [linux]
123 |
124 | '@esbuild/linux-s390x@0.23.1':
125 | resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==}
126 | engines: {node: '>=18'}
127 | cpu: [s390x]
128 | os: [linux]
129 |
130 | '@esbuild/linux-x64@0.23.1':
131 | resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==}
132 | engines: {node: '>=18'}
133 | cpu: [x64]
134 | os: [linux]
135 |
136 | '@esbuild/netbsd-x64@0.23.1':
137 | resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==}
138 | engines: {node: '>=18'}
139 | cpu: [x64]
140 | os: [netbsd]
141 |
142 | '@esbuild/openbsd-arm64@0.23.1':
143 | resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==}
144 | engines: {node: '>=18'}
145 | cpu: [arm64]
146 | os: [openbsd]
147 |
148 | '@esbuild/openbsd-x64@0.23.1':
149 | resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==}
150 | engines: {node: '>=18'}
151 | cpu: [x64]
152 | os: [openbsd]
153 |
154 | '@esbuild/sunos-x64@0.23.1':
155 | resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==}
156 | engines: {node: '>=18'}
157 | cpu: [x64]
158 | os: [sunos]
159 |
160 | '@esbuild/win32-arm64@0.23.1':
161 | resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==}
162 | engines: {node: '>=18'}
163 | cpu: [arm64]
164 | os: [win32]
165 |
166 | '@esbuild/win32-ia32@0.23.1':
167 | resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==}
168 | engines: {node: '>=18'}
169 | cpu: [ia32]
170 | os: [win32]
171 |
172 | '@esbuild/win32-x64@0.23.1':
173 | resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==}
174 | engines: {node: '>=18'}
175 | cpu: [x64]
176 | os: [win32]
177 |
178 | '@huggingface/jinja@0.2.2':
179 | resolution: {integrity: sha512-/KPde26khDUIPkTGU82jdtTW9UAuvUTumCAbFs/7giR0SxsvZC4hru51PBvpijH6BVkHcROcvZM/lpy5h1jRRA==}
180 | engines: {node: '>=18'}
181 |
182 | '@isaacs/cliui@8.0.2':
183 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
184 | engines: {node: '>=12'}
185 |
186 | '@isaacs/fs-minipass@4.0.1':
187 | resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==}
188 | engines: {node: '>=18.0.0'}
189 |
190 | '@jridgewell/resolve-uri@3.1.2':
191 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
192 | engines: {node: '>=6.0.0'}
193 |
194 | '@jridgewell/sourcemap-codec@1.5.0':
195 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
196 |
197 | '@jridgewell/trace-mapping@0.3.9':
198 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
199 |
200 | '@pkgjs/parseargs@0.11.0':
201 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
202 | engines: {node: '>=14'}
203 |
204 | '@protobufjs/aspromise@1.1.2':
205 | resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
206 |
207 | '@protobufjs/base64@1.1.2':
208 | resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==}
209 |
210 | '@protobufjs/codegen@2.0.4':
211 | resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==}
212 |
213 | '@protobufjs/eventemitter@1.1.0':
214 | resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==}
215 |
216 | '@protobufjs/fetch@1.1.0':
217 | resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==}
218 |
219 | '@protobufjs/float@1.0.2':
220 | resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
221 |
222 | '@protobufjs/inquire@1.1.0':
223 | resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==}
224 |
225 | '@protobufjs/path@1.1.2':
226 | resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
227 |
228 | '@protobufjs/pool@1.1.0':
229 | resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
230 |
231 | '@protobufjs/utf8@1.1.0':
232 | resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
233 |
234 | '@tsconfig/node10@1.0.11':
235 | resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==}
236 |
237 | '@tsconfig/node12@1.0.11':
238 | resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
239 |
240 | '@tsconfig/node14@1.0.3':
241 | resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
242 |
243 | '@tsconfig/node16@1.0.4':
244 | resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
245 |
246 | '@types/long@4.0.2':
247 | resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==}
248 |
249 | '@types/node@22.7.5':
250 | resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==}
251 |
252 | '@xenova/transformers@2.17.2':
253 | resolution: {integrity: sha512-lZmHqzrVIkSvZdKZEx7IYY51TK0WDrC8eR0c5IMnBsO8di8are1zzw8BlLhyO2TklZKLN5UffNGs1IJwT6oOqQ==}
254 |
255 | acorn-walk@8.3.4:
256 | resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==}
257 | engines: {node: '>=0.4.0'}
258 |
259 | acorn@8.12.1:
260 | resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
261 | engines: {node: '>=0.4.0'}
262 | hasBin: true
263 |
264 | ansi-regex@5.0.1:
265 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
266 | engines: {node: '>=8'}
267 |
268 | ansi-regex@6.1.0:
269 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
270 | engines: {node: '>=12'}
271 |
272 | ansi-styles@4.3.0:
273 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
274 | engines: {node: '>=8'}
275 |
276 | ansi-styles@6.2.1:
277 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
278 | engines: {node: '>=12'}
279 |
280 | arg@4.1.3:
281 | resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
282 |
283 | b4a@1.6.7:
284 | resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==}
285 |
286 | balanced-match@1.0.2:
287 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
288 |
289 | bare-events@2.5.0:
290 | resolution: {integrity: sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==}
291 |
292 | bare-fs@2.3.5:
293 | resolution: {integrity: sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==}
294 |
295 | bare-os@2.4.4:
296 | resolution: {integrity: sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==}
297 |
298 | bare-path@2.1.3:
299 | resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==}
300 |
301 | bare-stream@2.3.0:
302 | resolution: {integrity: sha512-pVRWciewGUeCyKEuRxwv06M079r+fRjAQjBEK2P6OYGrO43O+Z0LrPZZEjlc4mB6C2RpZ9AxJ1s7NLEtOHO6eA==}
303 |
304 | base64-js@1.5.1:
305 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
306 |
307 | bl@4.1.0:
308 | resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
309 |
310 | brace-expansion@2.0.1:
311 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
312 |
313 | buffer@5.7.1:
314 | resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
315 |
316 | chownr@1.1.4:
317 | resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
318 |
319 | chownr@3.0.0:
320 | resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==}
321 | engines: {node: '>=18'}
322 |
323 | color-convert@2.0.1:
324 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
325 | engines: {node: '>=7.0.0'}
326 |
327 | color-name@1.1.4:
328 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
329 |
330 | color-string@1.9.1:
331 | resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
332 |
333 | color@4.2.3:
334 | resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
335 | engines: {node: '>=12.5.0'}
336 |
337 | create-require@1.1.1:
338 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
339 |
340 | cross-spawn@7.0.3:
341 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
342 | engines: {node: '>= 8'}
343 |
344 | decompress-response@6.0.0:
345 | resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
346 | engines: {node: '>=10'}
347 |
348 | deep-extend@0.6.0:
349 | resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
350 | engines: {node: '>=4.0.0'}
351 |
352 | detect-libc@2.0.3:
353 | resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
354 | engines: {node: '>=8'}
355 |
356 | diff@4.0.2:
357 | resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
358 | engines: {node: '>=0.3.1'}
359 |
360 | eastasianwidth@0.2.0:
361 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
362 |
363 | emoji-regex@8.0.0:
364 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
365 |
366 | emoji-regex@9.2.2:
367 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
368 |
369 | end-of-stream@1.4.4:
370 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
371 |
372 | esbuild@0.23.1:
373 | resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==}
374 | engines: {node: '>=18'}
375 | hasBin: true
376 |
377 | expand-template@2.0.3:
378 | resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
379 | engines: {node: '>=6'}
380 |
381 | fast-fifo@1.3.2:
382 | resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
383 |
384 | flatbuffers@1.12.0:
385 | resolution: {integrity: sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==}
386 |
387 | foreground-child@3.3.0:
388 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
389 | engines: {node: '>=14'}
390 |
391 | fs-constants@1.0.0:
392 | resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
393 |
394 | fsevents@2.3.3:
395 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
396 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
397 | os: [darwin]
398 |
399 | get-tsconfig@4.8.1:
400 | resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==}
401 |
402 | github-from-package@0.0.0:
403 | resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
404 |
405 | gliner@file:../..:
406 | resolution: {directory: ../.., type: directory}
407 | peerDependencies:
408 | onnxruntime-node: ^1.19.2
409 |
410 | glob@10.4.5:
411 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
412 | hasBin: true
413 |
414 | guid-typescript@1.0.9:
415 | resolution: {integrity: sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==}
416 |
417 | ieee754@1.2.1:
418 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
419 |
420 | inherits@2.0.4:
421 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
422 |
423 | ini@1.3.8:
424 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
425 |
426 | is-arrayish@0.3.2:
427 | resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
428 |
429 | is-fullwidth-code-point@3.0.0:
430 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
431 | engines: {node: '>=8'}
432 |
433 | isexe@2.0.0:
434 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
435 |
436 | jackspeak@3.4.3:
437 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
438 |
439 | long@4.0.0:
440 | resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==}
441 |
442 | long@5.2.3:
443 | resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==}
444 |
445 | lru-cache@10.4.3:
446 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
447 |
448 | make-error@1.3.6:
449 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
450 |
451 | mimic-response@3.1.0:
452 | resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
453 | engines: {node: '>=10'}
454 |
455 | minimatch@9.0.5:
456 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
457 | engines: {node: '>=16 || 14 >=14.17'}
458 |
459 | minimist@1.2.8:
460 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
461 |
462 | minipass@7.1.2:
463 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
464 | engines: {node: '>=16 || 14 >=14.17'}
465 |
466 | minizlib@3.0.1:
467 | resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==}
468 | engines: {node: '>= 18'}
469 |
470 | mkdirp-classic@0.5.3:
471 | resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
472 |
473 | mkdirp@3.0.1:
474 | resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==}
475 | engines: {node: '>=10'}
476 | hasBin: true
477 |
478 | napi-build-utils@1.0.2:
479 | resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==}
480 |
481 | node-abi@3.68.0:
482 | resolution: {integrity: sha512-7vbj10trelExNjFSBm5kTvZXXa7pZyKWx9RCKIyqe6I9Ev3IzGpQoqBP3a+cOdxY+pWj6VkP28n/2wWysBHD/A==}
483 | engines: {node: '>=10'}
484 |
485 | node-addon-api@6.1.0:
486 | resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
487 |
488 | once@1.4.0:
489 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
490 |
491 | onnx-proto@4.0.4:
492 | resolution: {integrity: sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==}
493 |
494 | onnxruntime-common@1.14.0:
495 | resolution: {integrity: sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew==}
496 |
497 | onnxruntime-common@1.19.2:
498 | resolution: {integrity: sha512-a4R7wYEVFbZBlp0BfhpbFWqe4opCor3KM+5Wm22Az3NGDcQMiU2hfG/0MfnBs+1ZrlSGmlgWeMcXQkDk1UFb8Q==}
499 |
500 | onnxruntime-node@1.14.0:
501 | resolution: {integrity: sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w==}
502 | os: [win32, darwin, linux]
503 |
504 | onnxruntime-node@1.19.2:
505 | resolution: {integrity: sha512-9eHMP/HKbbeUcqte1JYzaaRC8JPn7ojWeCeoyShO86TOR97OCyIyAIOGX3V95ErjslVhJRXY8Em/caIUc0hm1Q==}
506 | os: [win32, darwin, linux]
507 |
508 | onnxruntime-web@1.14.0:
509 | resolution: {integrity: sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==}
510 |
511 | onnxruntime-web@1.19.2:
512 | resolution: {integrity: sha512-r0ok6KpTUXR4WA+rHvUiZn7JoH02e8iS7XE1p5bXk7q3E0UaRFfYvpMNUHqEPiTBMuIssfBxDCQjUihV8dDFPg==}
513 |
514 | package-json-from-dist@1.0.1:
515 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
516 |
517 | path-key@3.1.1:
518 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
519 | engines: {node: '>=8'}
520 |
521 | path-scurry@1.11.1:
522 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
523 | engines: {node: '>=16 || 14 >=14.18'}
524 |
525 | platform@1.3.6:
526 | resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==}
527 |
528 | prebuild-install@7.1.2:
529 | resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==}
530 | engines: {node: '>=10'}
531 | hasBin: true
532 |
533 | protobufjs@6.11.4:
534 | resolution: {integrity: sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==}
535 | hasBin: true
536 |
537 | protobufjs@7.4.0:
538 | resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==}
539 | engines: {node: '>=12.0.0'}
540 |
541 | pump@3.0.2:
542 | resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==}
543 |
544 | queue-tick@1.0.1:
545 | resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==}
546 |
547 | rc@1.2.8:
548 | resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
549 | hasBin: true
550 |
551 | readable-stream@3.6.2:
552 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
553 | engines: {node: '>= 6'}
554 |
555 | resolve-pkg-maps@1.0.0:
556 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
557 |
558 | rimraf@5.0.10:
559 | resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==}
560 | hasBin: true
561 |
562 | safe-buffer@5.2.1:
563 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
564 |
565 | semver@7.6.3:
566 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
567 | engines: {node: '>=10'}
568 | hasBin: true
569 |
570 | sharp@0.32.6:
571 | resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==}
572 | engines: {node: '>=14.15.0'}
573 |
574 | shebang-command@2.0.0:
575 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
576 | engines: {node: '>=8'}
577 |
578 | shebang-regex@3.0.0:
579 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
580 | engines: {node: '>=8'}
581 |
582 | signal-exit@4.1.0:
583 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
584 | engines: {node: '>=14'}
585 |
586 | simple-concat@1.0.1:
587 | resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
588 |
589 | simple-get@4.0.1:
590 | resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==}
591 |
592 | simple-swizzle@0.2.2:
593 | resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
594 |
595 | streamx@2.20.1:
596 | resolution: {integrity: sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==}
597 |
598 | string-width@4.2.3:
599 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
600 | engines: {node: '>=8'}
601 |
602 | string-width@5.1.2:
603 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
604 | engines: {node: '>=12'}
605 |
606 | string_decoder@1.3.0:
607 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
608 |
609 | strip-ansi@6.0.1:
610 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
611 | engines: {node: '>=8'}
612 |
613 | strip-ansi@7.1.0:
614 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
615 | engines: {node: '>=12'}
616 |
617 | strip-json-comments@2.0.1:
618 | resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
619 | engines: {node: '>=0.10.0'}
620 |
621 | tar-fs@2.1.1:
622 | resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==}
623 |
624 | tar-fs@3.0.6:
625 | resolution: {integrity: sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==}
626 |
627 | tar-stream@2.2.0:
628 | resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
629 | engines: {node: '>=6'}
630 |
631 | tar-stream@3.1.7:
632 | resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
633 |
634 | tar@7.4.3:
635 | resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==}
636 | engines: {node: '>=18'}
637 |
638 | text-decoder@1.2.0:
639 | resolution: {integrity: sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==}
640 |
641 | ts-node@10.9.2:
642 | resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
643 | hasBin: true
644 | peerDependencies:
645 | '@swc/core': '>=1.2.50'
646 | '@swc/wasm': '>=1.2.50'
647 | '@types/node': '*'
648 | typescript: '>=2.7'
649 | peerDependenciesMeta:
650 | '@swc/core':
651 | optional: true
652 | '@swc/wasm':
653 | optional: true
654 |
655 | tsx@4.19.2:
656 | resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==}
657 | engines: {node: '>=18.0.0'}
658 | hasBin: true
659 |
660 | tunnel-agent@0.6.0:
661 | resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
662 |
663 | typescript@5.6.3:
664 | resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==}
665 | engines: {node: '>=14.17'}
666 | hasBin: true
667 |
668 | undici-types@6.19.8:
669 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
670 |
671 | util-deprecate@1.0.2:
672 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
673 |
674 | v8-compile-cache-lib@3.0.1:
675 | resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
676 |
677 | which@2.0.2:
678 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
679 | engines: {node: '>= 8'}
680 | hasBin: true
681 |
682 | wrap-ansi@7.0.0:
683 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
684 | engines: {node: '>=10'}
685 |
686 | wrap-ansi@8.1.0:
687 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
688 | engines: {node: '>=12'}
689 |
690 | wrappy@1.0.2:
691 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
692 |
693 | yallist@5.0.0:
694 | resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==}
695 | engines: {node: '>=18'}
696 |
697 | yn@3.1.1:
698 | resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
699 | engines: {node: '>=6'}
700 |
701 | snapshots:
702 |
703 | '@cspotcode/source-map-support@0.8.1':
704 | dependencies:
705 | '@jridgewell/trace-mapping': 0.3.9
706 |
707 | '@esbuild/aix-ppc64@0.23.1':
708 | optional: true
709 |
710 | '@esbuild/android-arm64@0.23.1':
711 | optional: true
712 |
713 | '@esbuild/android-arm@0.23.1':
714 | optional: true
715 |
716 | '@esbuild/android-x64@0.23.1':
717 | optional: true
718 |
719 | '@esbuild/darwin-arm64@0.23.1':
720 | optional: true
721 |
722 | '@esbuild/darwin-x64@0.23.1':
723 | optional: true
724 |
725 | '@esbuild/freebsd-arm64@0.23.1':
726 | optional: true
727 |
728 | '@esbuild/freebsd-x64@0.23.1':
729 | optional: true
730 |
731 | '@esbuild/linux-arm64@0.23.1':
732 | optional: true
733 |
734 | '@esbuild/linux-arm@0.23.1':
735 | optional: true
736 |
737 | '@esbuild/linux-ia32@0.23.1':
738 | optional: true
739 |
740 | '@esbuild/linux-loong64@0.23.1':
741 | optional: true
742 |
743 | '@esbuild/linux-mips64el@0.23.1':
744 | optional: true
745 |
746 | '@esbuild/linux-ppc64@0.23.1':
747 | optional: true
748 |
749 | '@esbuild/linux-riscv64@0.23.1':
750 | optional: true
751 |
752 | '@esbuild/linux-s390x@0.23.1':
753 | optional: true
754 |
755 | '@esbuild/linux-x64@0.23.1':
756 | optional: true
757 |
758 | '@esbuild/netbsd-x64@0.23.1':
759 | optional: true
760 |
761 | '@esbuild/openbsd-arm64@0.23.1':
762 | optional: true
763 |
764 | '@esbuild/openbsd-x64@0.23.1':
765 | optional: true
766 |
767 | '@esbuild/sunos-x64@0.23.1':
768 | optional: true
769 |
770 | '@esbuild/win32-arm64@0.23.1':
771 | optional: true
772 |
773 | '@esbuild/win32-ia32@0.23.1':
774 | optional: true
775 |
776 | '@esbuild/win32-x64@0.23.1':
777 | optional: true
778 |
779 | '@huggingface/jinja@0.2.2': {}
780 |
781 | '@isaacs/cliui@8.0.2':
782 | dependencies:
783 | string-width: 5.1.2
784 | string-width-cjs: string-width@4.2.3
785 | strip-ansi: 7.1.0
786 | strip-ansi-cjs: strip-ansi@6.0.1
787 | wrap-ansi: 8.1.0
788 | wrap-ansi-cjs: wrap-ansi@7.0.0
789 |
790 | '@isaacs/fs-minipass@4.0.1':
791 | dependencies:
792 | minipass: 7.1.2
793 |
794 | '@jridgewell/resolve-uri@3.1.2': {}
795 |
796 | '@jridgewell/sourcemap-codec@1.5.0': {}
797 |
798 | '@jridgewell/trace-mapping@0.3.9':
799 | dependencies:
800 | '@jridgewell/resolve-uri': 3.1.2
801 | '@jridgewell/sourcemap-codec': 1.5.0
802 |
803 | '@pkgjs/parseargs@0.11.0':
804 | optional: true
805 |
806 | '@protobufjs/aspromise@1.1.2': {}
807 |
808 | '@protobufjs/base64@1.1.2': {}
809 |
810 | '@protobufjs/codegen@2.0.4': {}
811 |
812 | '@protobufjs/eventemitter@1.1.0': {}
813 |
814 | '@protobufjs/fetch@1.1.0':
815 | dependencies:
816 | '@protobufjs/aspromise': 1.1.2
817 | '@protobufjs/inquire': 1.1.0
818 |
819 | '@protobufjs/float@1.0.2': {}
820 |
821 | '@protobufjs/inquire@1.1.0': {}
822 |
823 | '@protobufjs/path@1.1.2': {}
824 |
825 | '@protobufjs/pool@1.1.0': {}
826 |
827 | '@protobufjs/utf8@1.1.0': {}
828 |
829 | '@tsconfig/node10@1.0.11': {}
830 |
831 | '@tsconfig/node12@1.0.11': {}
832 |
833 | '@tsconfig/node14@1.0.3': {}
834 |
835 | '@tsconfig/node16@1.0.4': {}
836 |
837 | '@types/long@4.0.2': {}
838 |
839 | '@types/node@22.7.5':
840 | dependencies:
841 | undici-types: 6.19.8
842 |
843 | '@xenova/transformers@2.17.2':
844 | dependencies:
845 | '@huggingface/jinja': 0.2.2
846 | onnxruntime-web: 1.14.0
847 | sharp: 0.32.6
848 | optionalDependencies:
849 | onnxruntime-node: 1.14.0
850 |
851 | acorn-walk@8.3.4:
852 | dependencies:
853 | acorn: 8.12.1
854 |
855 | acorn@8.12.1: {}
856 |
857 | ansi-regex@5.0.1: {}
858 |
859 | ansi-regex@6.1.0: {}
860 |
861 | ansi-styles@4.3.0:
862 | dependencies:
863 | color-convert: 2.0.1
864 |
865 | ansi-styles@6.2.1: {}
866 |
867 | arg@4.1.3: {}
868 |
869 | b4a@1.6.7: {}
870 |
871 | balanced-match@1.0.2: {}
872 |
873 | bare-events@2.5.0:
874 | optional: true
875 |
876 | bare-fs@2.3.5:
877 | dependencies:
878 | bare-events: 2.5.0
879 | bare-path: 2.1.3
880 | bare-stream: 2.3.0
881 | optional: true
882 |
883 | bare-os@2.4.4:
884 | optional: true
885 |
886 | bare-path@2.1.3:
887 | dependencies:
888 | bare-os: 2.4.4
889 | optional: true
890 |
891 | bare-stream@2.3.0:
892 | dependencies:
893 | b4a: 1.6.7
894 | streamx: 2.20.1
895 | optional: true
896 |
897 | base64-js@1.5.1: {}
898 |
899 | bl@4.1.0:
900 | dependencies:
901 | buffer: 5.7.1
902 | inherits: 2.0.4
903 | readable-stream: 3.6.2
904 |
905 | brace-expansion@2.0.1:
906 | dependencies:
907 | balanced-match: 1.0.2
908 |
909 | buffer@5.7.1:
910 | dependencies:
911 | base64-js: 1.5.1
912 | ieee754: 1.2.1
913 |
914 | chownr@1.1.4: {}
915 |
916 | chownr@3.0.0: {}
917 |
918 | color-convert@2.0.1:
919 | dependencies:
920 | color-name: 1.1.4
921 |
922 | color-name@1.1.4: {}
923 |
924 | color-string@1.9.1:
925 | dependencies:
926 | color-name: 1.1.4
927 | simple-swizzle: 0.2.2
928 |
929 | color@4.2.3:
930 | dependencies:
931 | color-convert: 2.0.1
932 | color-string: 1.9.1
933 |
934 | create-require@1.1.1: {}
935 |
936 | cross-spawn@7.0.3:
937 | dependencies:
938 | path-key: 3.1.1
939 | shebang-command: 2.0.0
940 | which: 2.0.2
941 |
942 | decompress-response@6.0.0:
943 | dependencies:
944 | mimic-response: 3.1.0
945 |
946 | deep-extend@0.6.0: {}
947 |
948 | detect-libc@2.0.3: {}
949 |
950 | diff@4.0.2: {}
951 |
952 | eastasianwidth@0.2.0: {}
953 |
954 | emoji-regex@8.0.0: {}
955 |
956 | emoji-regex@9.2.2: {}
957 |
958 | end-of-stream@1.4.4:
959 | dependencies:
960 | once: 1.4.0
961 |
962 | esbuild@0.23.1:
963 | optionalDependencies:
964 | '@esbuild/aix-ppc64': 0.23.1
965 | '@esbuild/android-arm': 0.23.1
966 | '@esbuild/android-arm64': 0.23.1
967 | '@esbuild/android-x64': 0.23.1
968 | '@esbuild/darwin-arm64': 0.23.1
969 | '@esbuild/darwin-x64': 0.23.1
970 | '@esbuild/freebsd-arm64': 0.23.1
971 | '@esbuild/freebsd-x64': 0.23.1
972 | '@esbuild/linux-arm': 0.23.1
973 | '@esbuild/linux-arm64': 0.23.1
974 | '@esbuild/linux-ia32': 0.23.1
975 | '@esbuild/linux-loong64': 0.23.1
976 | '@esbuild/linux-mips64el': 0.23.1
977 | '@esbuild/linux-ppc64': 0.23.1
978 | '@esbuild/linux-riscv64': 0.23.1
979 | '@esbuild/linux-s390x': 0.23.1
980 | '@esbuild/linux-x64': 0.23.1
981 | '@esbuild/netbsd-x64': 0.23.1
982 | '@esbuild/openbsd-arm64': 0.23.1
983 | '@esbuild/openbsd-x64': 0.23.1
984 | '@esbuild/sunos-x64': 0.23.1
985 | '@esbuild/win32-arm64': 0.23.1
986 | '@esbuild/win32-ia32': 0.23.1
987 | '@esbuild/win32-x64': 0.23.1
988 |
989 | expand-template@2.0.3: {}
990 |
991 | fast-fifo@1.3.2: {}
992 |
993 | flatbuffers@1.12.0: {}
994 |
995 | foreground-child@3.3.0:
996 | dependencies:
997 | cross-spawn: 7.0.3
998 | signal-exit: 4.1.0
999 |
1000 | fs-constants@1.0.0: {}
1001 |
1002 | fsevents@2.3.3:
1003 | optional: true
1004 |
1005 | get-tsconfig@4.8.1:
1006 | dependencies:
1007 | resolve-pkg-maps: 1.0.0
1008 |
1009 | github-from-package@0.0.0: {}
1010 |
1011 | gliner@file:../..(onnxruntime-node@1.19.2):
1012 | dependencies:
1013 | '@xenova/transformers': 2.17.2
1014 | onnxruntime-common: 1.19.2
1015 | onnxruntime-node: 1.19.2
1016 | onnxruntime-web: 1.19.2
1017 |
1018 | glob@10.4.5:
1019 | dependencies:
1020 | foreground-child: 3.3.0
1021 | jackspeak: 3.4.3
1022 | minimatch: 9.0.5
1023 | minipass: 7.1.2
1024 | package-json-from-dist: 1.0.1
1025 | path-scurry: 1.11.1
1026 |
1027 | guid-typescript@1.0.9: {}
1028 |
1029 | ieee754@1.2.1: {}
1030 |
1031 | inherits@2.0.4: {}
1032 |
1033 | ini@1.3.8: {}
1034 |
1035 | is-arrayish@0.3.2: {}
1036 |
1037 | is-fullwidth-code-point@3.0.0: {}
1038 |
1039 | isexe@2.0.0: {}
1040 |
1041 | jackspeak@3.4.3:
1042 | dependencies:
1043 | '@isaacs/cliui': 8.0.2
1044 | optionalDependencies:
1045 | '@pkgjs/parseargs': 0.11.0
1046 |
1047 | long@4.0.0: {}
1048 |
1049 | long@5.2.3: {}
1050 |
1051 | lru-cache@10.4.3: {}
1052 |
1053 | make-error@1.3.6: {}
1054 |
1055 | mimic-response@3.1.0: {}
1056 |
1057 | minimatch@9.0.5:
1058 | dependencies:
1059 | brace-expansion: 2.0.1
1060 |
1061 | minimist@1.2.8: {}
1062 |
1063 | minipass@7.1.2: {}
1064 |
1065 | minizlib@3.0.1:
1066 | dependencies:
1067 | minipass: 7.1.2
1068 | rimraf: 5.0.10
1069 |
1070 | mkdirp-classic@0.5.3: {}
1071 |
1072 | mkdirp@3.0.1: {}
1073 |
1074 | napi-build-utils@1.0.2: {}
1075 |
1076 | node-abi@3.68.0:
1077 | dependencies:
1078 | semver: 7.6.3
1079 |
1080 | node-addon-api@6.1.0: {}
1081 |
1082 | once@1.4.0:
1083 | dependencies:
1084 | wrappy: 1.0.2
1085 |
1086 | onnx-proto@4.0.4:
1087 | dependencies:
1088 | protobufjs: 6.11.4
1089 |
1090 | onnxruntime-common@1.14.0: {}
1091 |
1092 | onnxruntime-common@1.19.2: {}
1093 |
1094 | onnxruntime-node@1.14.0:
1095 | dependencies:
1096 | onnxruntime-common: 1.14.0
1097 | optional: true
1098 |
1099 | onnxruntime-node@1.19.2:
1100 | dependencies:
1101 | onnxruntime-common: 1.19.2
1102 | tar: 7.4.3
1103 |
1104 | onnxruntime-web@1.14.0:
1105 | dependencies:
1106 | flatbuffers: 1.12.0
1107 | guid-typescript: 1.0.9
1108 | long: 4.0.0
1109 | onnx-proto: 4.0.4
1110 | onnxruntime-common: 1.14.0
1111 | platform: 1.3.6
1112 |
1113 | onnxruntime-web@1.19.2:
1114 | dependencies:
1115 | flatbuffers: 1.12.0
1116 | guid-typescript: 1.0.9
1117 | long: 5.2.3
1118 | onnxruntime-common: 1.19.2
1119 | platform: 1.3.6
1120 | protobufjs: 7.4.0
1121 |
1122 | package-json-from-dist@1.0.1: {}
1123 |
1124 | path-key@3.1.1: {}
1125 |
1126 | path-scurry@1.11.1:
1127 | dependencies:
1128 | lru-cache: 10.4.3
1129 | minipass: 7.1.2
1130 |
1131 | platform@1.3.6: {}
1132 |
1133 | prebuild-install@7.1.2:
1134 | dependencies:
1135 | detect-libc: 2.0.3
1136 | expand-template: 2.0.3
1137 | github-from-package: 0.0.0
1138 | minimist: 1.2.8
1139 | mkdirp-classic: 0.5.3
1140 | napi-build-utils: 1.0.2
1141 | node-abi: 3.68.0
1142 | pump: 3.0.2
1143 | rc: 1.2.8
1144 | simple-get: 4.0.1
1145 | tar-fs: 2.1.1
1146 | tunnel-agent: 0.6.0
1147 |
1148 | protobufjs@6.11.4:
1149 | dependencies:
1150 | '@protobufjs/aspromise': 1.1.2
1151 | '@protobufjs/base64': 1.1.2
1152 | '@protobufjs/codegen': 2.0.4
1153 | '@protobufjs/eventemitter': 1.1.0
1154 | '@protobufjs/fetch': 1.1.0
1155 | '@protobufjs/float': 1.0.2
1156 | '@protobufjs/inquire': 1.1.0
1157 | '@protobufjs/path': 1.1.2
1158 | '@protobufjs/pool': 1.1.0
1159 | '@protobufjs/utf8': 1.1.0
1160 | '@types/long': 4.0.2
1161 | '@types/node': 22.7.5
1162 | long: 4.0.0
1163 |
1164 | protobufjs@7.4.0:
1165 | dependencies:
1166 | '@protobufjs/aspromise': 1.1.2
1167 | '@protobufjs/base64': 1.1.2
1168 | '@protobufjs/codegen': 2.0.4
1169 | '@protobufjs/eventemitter': 1.1.0
1170 | '@protobufjs/fetch': 1.1.0
1171 | '@protobufjs/float': 1.0.2
1172 | '@protobufjs/inquire': 1.1.0
1173 | '@protobufjs/path': 1.1.2
1174 | '@protobufjs/pool': 1.1.0
1175 | '@protobufjs/utf8': 1.1.0
1176 | '@types/node': 22.7.5
1177 | long: 5.2.3
1178 |
1179 | pump@3.0.2:
1180 | dependencies:
1181 | end-of-stream: 1.4.4
1182 | once: 1.4.0
1183 |
1184 | queue-tick@1.0.1: {}
1185 |
1186 | rc@1.2.8:
1187 | dependencies:
1188 | deep-extend: 0.6.0
1189 | ini: 1.3.8
1190 | minimist: 1.2.8
1191 | strip-json-comments: 2.0.1
1192 |
1193 | readable-stream@3.6.2:
1194 | dependencies:
1195 | inherits: 2.0.4
1196 | string_decoder: 1.3.0
1197 | util-deprecate: 1.0.2
1198 |
1199 | resolve-pkg-maps@1.0.0: {}
1200 |
1201 | rimraf@5.0.10:
1202 | dependencies:
1203 | glob: 10.4.5
1204 |
1205 | safe-buffer@5.2.1: {}
1206 |
1207 | semver@7.6.3: {}
1208 |
1209 | sharp@0.32.6:
1210 | dependencies:
1211 | color: 4.2.3
1212 | detect-libc: 2.0.3
1213 | node-addon-api: 6.1.0
1214 | prebuild-install: 7.1.2
1215 | semver: 7.6.3
1216 | simple-get: 4.0.1
1217 | tar-fs: 3.0.6
1218 | tunnel-agent: 0.6.0
1219 |
1220 | shebang-command@2.0.0:
1221 | dependencies:
1222 | shebang-regex: 3.0.0
1223 |
1224 | shebang-regex@3.0.0: {}
1225 |
1226 | signal-exit@4.1.0: {}
1227 |
1228 | simple-concat@1.0.1: {}
1229 |
1230 | simple-get@4.0.1:
1231 | dependencies:
1232 | decompress-response: 6.0.0
1233 | once: 1.4.0
1234 | simple-concat: 1.0.1
1235 |
1236 | simple-swizzle@0.2.2:
1237 | dependencies:
1238 | is-arrayish: 0.3.2
1239 |
1240 | streamx@2.20.1:
1241 | dependencies:
1242 | fast-fifo: 1.3.2
1243 | queue-tick: 1.0.1
1244 | text-decoder: 1.2.0
1245 | optionalDependencies:
1246 | bare-events: 2.5.0
1247 |
1248 | string-width@4.2.3:
1249 | dependencies:
1250 | emoji-regex: 8.0.0
1251 | is-fullwidth-code-point: 3.0.0
1252 | strip-ansi: 6.0.1
1253 |
1254 | string-width@5.1.2:
1255 | dependencies:
1256 | eastasianwidth: 0.2.0
1257 | emoji-regex: 9.2.2
1258 | strip-ansi: 7.1.0
1259 |
1260 | string_decoder@1.3.0:
1261 | dependencies:
1262 | safe-buffer: 5.2.1
1263 |
1264 | strip-ansi@6.0.1:
1265 | dependencies:
1266 | ansi-regex: 5.0.1
1267 |
1268 | strip-ansi@7.1.0:
1269 | dependencies:
1270 | ansi-regex: 6.1.0
1271 |
1272 | strip-json-comments@2.0.1: {}
1273 |
1274 | tar-fs@2.1.1:
1275 | dependencies:
1276 | chownr: 1.1.4
1277 | mkdirp-classic: 0.5.3
1278 | pump: 3.0.2
1279 | tar-stream: 2.2.0
1280 |
1281 | tar-fs@3.0.6:
1282 | dependencies:
1283 | pump: 3.0.2
1284 | tar-stream: 3.1.7
1285 | optionalDependencies:
1286 | bare-fs: 2.3.5
1287 | bare-path: 2.1.3
1288 |
1289 | tar-stream@2.2.0:
1290 | dependencies:
1291 | bl: 4.1.0
1292 | end-of-stream: 1.4.4
1293 | fs-constants: 1.0.0
1294 | inherits: 2.0.4
1295 | readable-stream: 3.6.2
1296 |
1297 | tar-stream@3.1.7:
1298 | dependencies:
1299 | b4a: 1.6.7
1300 | fast-fifo: 1.3.2
1301 | streamx: 2.20.1
1302 |
1303 | tar@7.4.3:
1304 | dependencies:
1305 | '@isaacs/fs-minipass': 4.0.1
1306 | chownr: 3.0.0
1307 | minipass: 7.1.2
1308 | minizlib: 3.0.1
1309 | mkdirp: 3.0.1
1310 | yallist: 5.0.0
1311 |
1312 | text-decoder@1.2.0:
1313 | dependencies:
1314 | b4a: 1.6.7
1315 |
1316 | ts-node@10.9.2(@types/node@22.7.5)(typescript@5.6.3):
1317 | dependencies:
1318 | '@cspotcode/source-map-support': 0.8.1
1319 | '@tsconfig/node10': 1.0.11
1320 | '@tsconfig/node12': 1.0.11
1321 | '@tsconfig/node14': 1.0.3
1322 | '@tsconfig/node16': 1.0.4
1323 | '@types/node': 22.7.5
1324 | acorn: 8.12.1
1325 | acorn-walk: 8.3.4
1326 | arg: 4.1.3
1327 | create-require: 1.1.1
1328 | diff: 4.0.2
1329 | make-error: 1.3.6
1330 | typescript: 5.6.3
1331 | v8-compile-cache-lib: 3.0.1
1332 | yn: 3.1.1
1333 |
1334 | tsx@4.19.2:
1335 | dependencies:
1336 | esbuild: 0.23.1
1337 | get-tsconfig: 4.8.1
1338 | optionalDependencies:
1339 | fsevents: 2.3.3
1340 |
1341 | tunnel-agent@0.6.0:
1342 | dependencies:
1343 | safe-buffer: 5.2.1
1344 |
1345 | typescript@5.6.3: {}
1346 |
1347 | undici-types@6.19.8: {}
1348 |
1349 | util-deprecate@1.0.2: {}
1350 |
1351 | v8-compile-cache-lib@3.0.1: {}
1352 |
1353 | which@2.0.2:
1354 | dependencies:
1355 | isexe: 2.0.0
1356 |
1357 | wrap-ansi@7.0.0:
1358 | dependencies:
1359 | ansi-styles: 4.3.0
1360 | string-width: 4.2.3
1361 | strip-ansi: 6.0.1
1362 |
1363 | wrap-ansi@8.1.0:
1364 | dependencies:
1365 | ansi-styles: 6.2.1
1366 | string-width: 5.1.2
1367 | strip-ansi: 7.1.0
1368 |
1369 | wrappy@1.0.2: {}
1370 |
1371 | yallist@5.0.0: {}
1372 |
1373 | yn@3.1.1: {}
1374 |
--------------------------------------------------------------------------------
/example/node/src/main.ts:
--------------------------------------------------------------------------------
1 | // import { Gliner } from "../../../src";
2 | // import { Gliner, ONXXNodeWrapper } from "../../../";
3 | import { Gliner } from "gliner/node";
4 | // import { Gliner } from "../../../dist";
5 |
6 | async function main(): Promise {
7 | const gliner = new Gliner({
8 | tokenizerPath: "onnx-community/gliner_small-v2",
9 | onnxSettings: {
10 | modelPath: "./models/model.onnx",
11 | },
12 | maxWidth: 12,
13 | });
14 |
15 | await gliner.initialize();
16 |
17 | const input_text1 = `
18 | Write a white paper on the state of the financial market for Morar - Rice to share with potential investors.
19 | Please prepare a brief for Gusikowski, Hansen and Shanahan on the legal aspects of piracy and maritime security.
20 | Write a short article about the differences between mindfulness-based therapy and traditional therapy for Mathias to share on social media.
21 | Could you write a blog post about the influence of family dynamics on adolescent development for Constantin.Morar's website?
22 | What's the difference between first-generation and second-generation antipsychotics for residents of 76511?
23 | Hey, can you help me understand the steps to appeal an administrative law decision in West Virginia?
24 | 4. Write a summary of the key privacy law principles for Optimization businesses to follow.
25 | `;
26 |
27 | const input_text2 = `
28 | How can Sadie Turcotte and Clifford Ernser develop better listening skills to improve their marriage?
29 | Write a white paper on the effectiveness of various ADHD therapy approaches for Trantow Inc to share with their colleagues.
30 | Could you please create a pricing strategy roadmap for Anastacio to follow over the next year?
31 | Hey there, can you create a customer satisfaction survey for Flatley, Rohan and Koepp's business? They want to measure their customers' happiness.
32 | Create a training program for Tonya Quitzon's employees to familiarize them with the business continuity plan.
33 | HIPAA guidelines for protecting patients' 146.229.205.216 in telemedicine consultations.
34 | Could you please provide Bruce Buckridge with a list of the top supply chain management software available in the market?
35 | Can you provide a list of resources for entrepreneurs to learn about intellectual property protection? Send it to Minnie Gulgowski at Kaylie.Littel52@hotmail.com.
36 | Prepare a trade compliance checklist for Borer LLC to ensure their business is adhering to all relevant trade laws.
37 | Investigate the effects of academic pressure on adolescent mental health, referencing Bethany Koss's experiences.
38 | `;
39 |
40 | const texts = [input_text1];
41 | const entities = ["city", "country", "river", "person", "car"];
42 |
43 | try {
44 | const start = performance.now();
45 | console.log("Running inference #1...");
46 | const decoded = await gliner.inference({ texts, entities });
47 | console.log(decoded);
48 | const end = performance.now();
49 | console.log(`Inference #1 took ${end - start} ms`);
50 |
51 | const start2 = performance.now();
52 | console.log("Running inference #2...");
53 | const decoded2 = await gliner.inference({ texts: [input_text2], entities });
54 | const end2 = performance.now();
55 | console.log(`Inference #2 took ${end2 - start2} ms`);
56 | console.log(decoded2);
57 | } catch (error) {
58 | console.error("Failed to run inference: ", error);
59 | throw error;
60 | }
61 | }
62 |
63 | main().catch((error) => console.error(error));
64 |
--------------------------------------------------------------------------------
/example/node/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "NodeNext",
4 | "target": "ES2020",
5 | "lib": ["ES2020"],
6 | "moduleResolution": "NodeNext",
7 | "esModuleInterop": true,
8 | "skipLibCheck": true,
9 | "outDir": "./dist",
10 | "rootDir": "./src",
11 | "strict": true
12 | },
13 | "ts-node": {
14 | "esm": true // Explicitly enable ESM support for ts-node
15 | },
16 | "include": ["src/**/*.ts"]
17 | }
18 |
--------------------------------------------------------------------------------
/example/web/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | ONNX Runtime Web Example
8 |
9 |
10 |
11 | ONNX Runtime in Vite
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/example/web/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "example-application-web",
3 | "private": true,
4 | "version": "0.0.1",
5 | "description": "Application to demonstrate the usage of the GLiNER inference engine",
6 | "type": "module",
7 | "scripts": {
8 | "dev": "vite",
9 | "build": "vite build",
10 | "preview": "vite preview"
11 | },
12 | "dependencies": {
13 | "gliner": "file:../../"
14 | },
15 | "devDependencies": {
16 | "prettier": "^3.3.3",
17 | "tsup": "^8.2.4",
18 | "typescript": "^5.6.2",
19 | "vite": "^5.4.3",
20 | "vite-plugin-static-copy": "^1.0.6",
21 | "vite-plugin-top-level-await": "^1.4.4",
22 | "vite-plugin-wasm": "^3.3.0"
23 | }
24 | }
--------------------------------------------------------------------------------
/example/web/src/main.ts:
--------------------------------------------------------------------------------
1 | // import { Gliner } from "../../../src";
2 | import { Gliner } from "../../../dist";
3 | // import { Gliner } from "gliner";
4 |
5 | async function main(): Promise {
6 | const gliner = new Gliner({
7 | tokenizerPath: "onnx-community/gliner_small-v2",
8 | onnxSettings: {
9 | modelPath: "/model.onnx",
10 | },
11 | maxWidth: 12,
12 | });
13 |
14 | await gliner.initialize();
15 |
16 | const input_text1 = `
17 | Write a white paper on the state of the financial market for Morar - Rice to share with potential investors.
18 | Please prepare a brief for Gusikowski, Hansen and Shanahan on the legal aspects of piracy and maritime security.
19 | Write a short article about the differences between mindfulness-based therapy and traditional therapy for Mathias to share on social media.
20 | Could you write a blog post about the influence of family dynamics on adolescent development for Constantin.Morar's website?
21 | What's the difference between first-generation and second-generation antipsychotics for residents of 76511?
22 | Hey, can you help me understand the steps to appeal an administrative law decision in West Virginia?
23 | 4. Write a summary of the key privacy law principles for Optimization businesses to follow.
24 | `;
25 |
26 | const input_text2 = `
27 | How can Sadie Turcotte and Clifford Ernser develop better listening skills to improve their marriage?
28 | Write a white paper on the effectiveness of various ADHD therapy approaches for Trantow Inc to share with their colleagues.
29 | Could you please create a pricing strategy roadmap for Anastacio to follow over the next year?
30 | Hey there, can you create a customer satisfaction survey for Flatley, Rohan and Koepp's business? They want to measure their customers' happiness.
31 | Create a training program for Tonya Quitzon's employees to familiarize them with the business continuity plan.
32 | HIPAA guidelines for protecting patients' 146.229.205.216 in telemedicine consultations.
33 | Could you please provide Bruce Buckridge with a list of the top supply chain management software available in the market?
34 | Can you provide a list of resources for entrepreneurs to learn about intellectual property protection? Send it to Minnie Gulgowski at Kaylie.Littel52@hotmail.com.
35 | Prepare a trade compliance checklist for Borer LLC to ensure their business is adhering to all relevant trade laws.
36 | Investigate the effects of academic pressure on adolescent mental health, referencing Bethany Koss's experiences.
37 | `;
38 |
39 | const texts = [input_text1];
40 | const entities = ["city", "country", "river", "person", "car"];
41 |
42 | try {
43 | const start = performance.now();
44 | console.log("Running inference #1...");
45 | const decoded = await gliner.inference({ texts, entities });
46 | console.log(decoded);
47 | const end = performance.now();
48 | console.log(`Inference #1 took ${end - start} ms`);
49 |
50 | const start2 = performance.now();
51 | console.log("Running inference #2...");
52 | const decoded2 = await gliner.inference({ texts: [input_text2], entities });
53 | const end2 = performance.now();
54 | console.log(`Inference #2 took ${end2 - start2} ms`);
55 | console.log(decoded2);
56 | } catch (error) {
57 | console.error("Failed to run inference: ", error);
58 | throw error;
59 | }
60 | }
61 |
62 | main().catch((error) => console.error(error));
63 |
--------------------------------------------------------------------------------
/example/web/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite";
2 | import { viteStaticCopy } from "vite-plugin-static-copy";
3 | import wasm from "vite-plugin-wasm";
4 | import topLevelAwait from "vite-plugin-top-level-await";
5 |
6 | export default defineConfig({
7 | plugins: [
8 | wasm(),
9 | topLevelAwait(),
10 | viteStaticCopy({
11 | targets: [
12 | {
13 | src: "node_modules/onnxruntime-web/dist/*.wasm",
14 | dest: "", // Copies the files directly to the public directory
15 | },
16 | ],
17 | }),
18 | ],
19 | build: {
20 | target: "esnext",
21 | rollupOptions: {
22 | external: ["onnxruntime-node"], // Externalize the Node.js-specific package
23 | },
24 | },
25 | server: {
26 | headers: {
27 | "Cross-Origin-Opener-Policy": "same-origin",
28 | "Cross-Origin-Embedder-Policy": "require-corp",
29 | },
30 | },
31 | optimizeDeps: {
32 | include: ["onnxruntime-web"], // Make sure 'onnxruntime-web' is handled properly by Vite
33 | exclude: ["onnxruntime-node"],
34 | },
35 | });
36 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gliner",
3 | "version": "0.0.19",
4 | "description": "This is a GLiNER inference engine",
5 | "main": "./dist/index.cjs",
6 | "module": "./dist/index.mjs",
7 | "types": "./dist/index.d.ts",
8 | "exports": {
9 | ".": {
10 | "require": "./dist/index.cjs",
11 | "import": "./dist/index.mjs"
12 | },
13 | "./node": {
14 | "require": "./dist/node/index.cjs",
15 | "import": "./dist/node/index.mjs"
16 | }
17 | },
18 | "repository": {
19 | "type": "git",
20 | "url": "https://github.com/Ingvarstep/GLiNER.js"
21 | },
22 | "keywords": [
23 | "GLiNER",
24 | "inference",
25 | "engine"
26 | ],
27 | "author": "Your Name",
28 | "license": "MIT",
29 | "files": [
30 | "package.json",
31 | "src",
32 | "dist",
33 | "README.md"
34 | ],
35 | "scripts": {
36 | "build": "tsup --format cjs,esm --dts",
37 | "changeset": "changeset",
38 | "release": "changeset publish",
39 | "version": "changeset version",
40 | "prepublishOnly": "npm run build",
41 | "test": "echo \"Error: no test specified\" && exit 0",
42 | "lint": "prettier --check src/**/*.ts",
43 | "lint:fix": "prettier --write src/**/*.ts"
44 | },
45 | "peerDependencies": {
46 | "onnxruntime-node": "1.19.2"
47 | },
48 | "dependencies": {
49 | "@xenova/transformers": "2.17.2",
50 | "onnxruntime-common": "1.19.2",
51 | "onnxruntime-web": "1.19.2"
52 | },
53 | "devDependencies": {
54 | "@changesets/cli": "^2.27.8",
55 | "prettier": "^3.3.3",
56 | "tsup": "^8.2.4",
57 | "typescript": "^5.6.2"
58 | },
59 | "private": false
60 | }
61 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: 5.3
2 |
3 | specifiers:
4 | '@changesets/cli': ^2.27.8
5 | '@xenova/transformers': 2.17.2
6 | onnxruntime-common: 1.19.2
7 | onnxruntime-web: 1.19.2
8 | prettier: ^3.3.3
9 | tsup: ^8.2.4
10 | typescript: ^5.6.2
11 |
12 | dependencies:
13 | '@xenova/transformers': 2.17.2
14 | onnxruntime-common: 1.19.2
15 | onnxruntime-web: 1.19.2
16 |
17 | devDependencies:
18 | '@changesets/cli': 2.28.1
19 | prettier: 3.5.2
20 | tsup: 8.4.0_typescript@5.8.2
21 | typescript: 5.8.2
22 |
23 | packages:
24 |
25 | /@babel/runtime/7.26.9:
26 | resolution: {integrity: sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==}
27 | engines: {node: '>=6.9.0'}
28 | dependencies:
29 | regenerator-runtime: 0.14.1
30 | dev: true
31 |
32 | /@changesets/apply-release-plan/7.0.10:
33 | resolution: {integrity: sha512-wNyeIJ3yDsVspYvHnEz1xQDq18D9ifed3lI+wxRQRK4pArUcuHgCTrHv0QRnnwjhVCQACxZ+CBih3wgOct6UXw==}
34 | dependencies:
35 | '@changesets/config': 3.1.1
36 | '@changesets/get-version-range-type': 0.4.0
37 | '@changesets/git': 3.0.2
38 | '@changesets/should-skip-package': 0.1.2
39 | '@changesets/types': 6.1.0
40 | '@manypkg/get-packages': 1.1.3
41 | detect-indent: 6.1.0
42 | fs-extra: 7.0.1
43 | lodash.startcase: 4.4.0
44 | outdent: 0.5.0
45 | prettier: 2.8.8
46 | resolve-from: 5.0.0
47 | semver: 7.7.1
48 | dev: true
49 |
50 | /@changesets/assemble-release-plan/6.0.6:
51 | resolution: {integrity: sha512-Frkj8hWJ1FRZiY3kzVCKzS0N5mMwWKwmv9vpam7vt8rZjLL1JMthdh6pSDVSPumHPshTTkKZ0VtNbE0cJHZZUg==}
52 | dependencies:
53 | '@changesets/errors': 0.2.0
54 | '@changesets/get-dependents-graph': 2.1.3
55 | '@changesets/should-skip-package': 0.1.2
56 | '@changesets/types': 6.1.0
57 | '@manypkg/get-packages': 1.1.3
58 | semver: 7.7.1
59 | dev: true
60 |
61 | /@changesets/changelog-git/0.2.1:
62 | resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==}
63 | dependencies:
64 | '@changesets/types': 6.1.0
65 | dev: true
66 |
67 | /@changesets/cli/2.28.1:
68 | resolution: {integrity: sha512-PiIyGRmSc6JddQJe/W1hRPjiN4VrMvb2VfQ6Uydy2punBioQrsxppyG5WafinKcW1mT0jOe/wU4k9Zy5ff21AA==}
69 | hasBin: true
70 | dependencies:
71 | '@changesets/apply-release-plan': 7.0.10
72 | '@changesets/assemble-release-plan': 6.0.6
73 | '@changesets/changelog-git': 0.2.1
74 | '@changesets/config': 3.1.1
75 | '@changesets/errors': 0.2.0
76 | '@changesets/get-dependents-graph': 2.1.3
77 | '@changesets/get-release-plan': 4.0.8
78 | '@changesets/git': 3.0.2
79 | '@changesets/logger': 0.1.1
80 | '@changesets/pre': 2.0.2
81 | '@changesets/read': 0.6.3
82 | '@changesets/should-skip-package': 0.1.2
83 | '@changesets/types': 6.1.0
84 | '@changesets/write': 0.4.0
85 | '@manypkg/get-packages': 1.1.3
86 | ansi-colors: 4.1.3
87 | ci-info: 3.9.0
88 | enquirer: 2.4.1
89 | external-editor: 3.1.0
90 | fs-extra: 7.0.1
91 | mri: 1.2.0
92 | p-limit: 2.3.0
93 | package-manager-detector: 0.2.11
94 | picocolors: 1.1.1
95 | resolve-from: 5.0.0
96 | semver: 7.7.1
97 | spawndamnit: 3.0.1
98 | term-size: 2.2.1
99 | dev: true
100 |
101 | /@changesets/config/3.1.1:
102 | resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==}
103 | dependencies:
104 | '@changesets/errors': 0.2.0
105 | '@changesets/get-dependents-graph': 2.1.3
106 | '@changesets/logger': 0.1.1
107 | '@changesets/types': 6.1.0
108 | '@manypkg/get-packages': 1.1.3
109 | fs-extra: 7.0.1
110 | micromatch: 4.0.8
111 | dev: true
112 |
113 | /@changesets/errors/0.2.0:
114 | resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==}
115 | dependencies:
116 | extendable-error: 0.1.7
117 | dev: true
118 |
119 | /@changesets/get-dependents-graph/2.1.3:
120 | resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==}
121 | dependencies:
122 | '@changesets/types': 6.1.0
123 | '@manypkg/get-packages': 1.1.3
124 | picocolors: 1.1.1
125 | semver: 7.7.1
126 | dev: true
127 |
128 | /@changesets/get-release-plan/4.0.8:
129 | resolution: {integrity: sha512-MM4mq2+DQU1ZT7nqxnpveDMTkMBLnwNX44cX7NSxlXmr7f8hO6/S2MXNiXG54uf/0nYnefv0cfy4Czf/ZL/EKQ==}
130 | dependencies:
131 | '@changesets/assemble-release-plan': 6.0.6
132 | '@changesets/config': 3.1.1
133 | '@changesets/pre': 2.0.2
134 | '@changesets/read': 0.6.3
135 | '@changesets/types': 6.1.0
136 | '@manypkg/get-packages': 1.1.3
137 | dev: true
138 |
139 | /@changesets/get-version-range-type/0.4.0:
140 | resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==}
141 | dev: true
142 |
143 | /@changesets/git/3.0.2:
144 | resolution: {integrity: sha512-r1/Kju9Y8OxRRdvna+nxpQIsMsRQn9dhhAZt94FLDeu0Hij2hnOozW8iqnHBgvu+KdnJppCveQwK4odwfw/aWQ==}
145 | dependencies:
146 | '@changesets/errors': 0.2.0
147 | '@manypkg/get-packages': 1.1.3
148 | is-subdir: 1.2.0
149 | micromatch: 4.0.8
150 | spawndamnit: 3.0.1
151 | dev: true
152 |
153 | /@changesets/logger/0.1.1:
154 | resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==}
155 | dependencies:
156 | picocolors: 1.1.1
157 | dev: true
158 |
159 | /@changesets/parse/0.4.1:
160 | resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==}
161 | dependencies:
162 | '@changesets/types': 6.1.0
163 | js-yaml: 3.14.1
164 | dev: true
165 |
166 | /@changesets/pre/2.0.2:
167 | resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==}
168 | dependencies:
169 | '@changesets/errors': 0.2.0
170 | '@changesets/types': 6.1.0
171 | '@manypkg/get-packages': 1.1.3
172 | fs-extra: 7.0.1
173 | dev: true
174 |
175 | /@changesets/read/0.6.3:
176 | resolution: {integrity: sha512-9H4p/OuJ3jXEUTjaVGdQEhBdqoT2cO5Ts95JTFsQyawmKzpL8FnIeJSyhTDPW1MBRDnwZlHFEM9SpPwJDY5wIg==}
177 | dependencies:
178 | '@changesets/git': 3.0.2
179 | '@changesets/logger': 0.1.1
180 | '@changesets/parse': 0.4.1
181 | '@changesets/types': 6.1.0
182 | fs-extra: 7.0.1
183 | p-filter: 2.1.0
184 | picocolors: 1.1.1
185 | dev: true
186 |
187 | /@changesets/should-skip-package/0.1.2:
188 | resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==}
189 | dependencies:
190 | '@changesets/types': 6.1.0
191 | '@manypkg/get-packages': 1.1.3
192 | dev: true
193 |
194 | /@changesets/types/4.1.0:
195 | resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==}
196 | dev: true
197 |
198 | /@changesets/types/6.1.0:
199 | resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==}
200 | dev: true
201 |
202 | /@changesets/write/0.4.0:
203 | resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==}
204 | dependencies:
205 | '@changesets/types': 6.1.0
206 | fs-extra: 7.0.1
207 | human-id: 4.1.1
208 | prettier: 2.8.8
209 | dev: true
210 |
211 | /@esbuild/aix-ppc64/0.25.0:
212 | resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==}
213 | engines: {node: '>=18'}
214 | cpu: [ppc64]
215 | os: [aix]
216 | dev: true
217 | optional: true
218 |
219 | /@esbuild/android-arm/0.25.0:
220 | resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==}
221 | engines: {node: '>=18'}
222 | cpu: [arm]
223 | os: [android]
224 | dev: true
225 | optional: true
226 |
227 | /@esbuild/android-arm64/0.25.0:
228 | resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==}
229 | engines: {node: '>=18'}
230 | cpu: [arm64]
231 | os: [android]
232 | dev: true
233 | optional: true
234 |
235 | /@esbuild/android-x64/0.25.0:
236 | resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==}
237 | engines: {node: '>=18'}
238 | cpu: [x64]
239 | os: [android]
240 | dev: true
241 | optional: true
242 |
243 | /@esbuild/darwin-arm64/0.25.0:
244 | resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==}
245 | engines: {node: '>=18'}
246 | cpu: [arm64]
247 | os: [darwin]
248 | dev: true
249 | optional: true
250 |
251 | /@esbuild/darwin-x64/0.25.0:
252 | resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==}
253 | engines: {node: '>=18'}
254 | cpu: [x64]
255 | os: [darwin]
256 | dev: true
257 | optional: true
258 |
259 | /@esbuild/freebsd-arm64/0.25.0:
260 | resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==}
261 | engines: {node: '>=18'}
262 | cpu: [arm64]
263 | os: [freebsd]
264 | dev: true
265 | optional: true
266 |
267 | /@esbuild/freebsd-x64/0.25.0:
268 | resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==}
269 | engines: {node: '>=18'}
270 | cpu: [x64]
271 | os: [freebsd]
272 | dev: true
273 | optional: true
274 |
275 | /@esbuild/linux-arm/0.25.0:
276 | resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==}
277 | engines: {node: '>=18'}
278 | cpu: [arm]
279 | os: [linux]
280 | dev: true
281 | optional: true
282 |
283 | /@esbuild/linux-arm64/0.25.0:
284 | resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==}
285 | engines: {node: '>=18'}
286 | cpu: [arm64]
287 | os: [linux]
288 | dev: true
289 | optional: true
290 |
291 | /@esbuild/linux-ia32/0.25.0:
292 | resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==}
293 | engines: {node: '>=18'}
294 | cpu: [ia32]
295 | os: [linux]
296 | dev: true
297 | optional: true
298 |
299 | /@esbuild/linux-loong64/0.25.0:
300 | resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==}
301 | engines: {node: '>=18'}
302 | cpu: [loong64]
303 | os: [linux]
304 | dev: true
305 | optional: true
306 |
307 | /@esbuild/linux-mips64el/0.25.0:
308 | resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==}
309 | engines: {node: '>=18'}
310 | cpu: [mips64el]
311 | os: [linux]
312 | dev: true
313 | optional: true
314 |
315 | /@esbuild/linux-ppc64/0.25.0:
316 | resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==}
317 | engines: {node: '>=18'}
318 | cpu: [ppc64]
319 | os: [linux]
320 | dev: true
321 | optional: true
322 |
323 | /@esbuild/linux-riscv64/0.25.0:
324 | resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==}
325 | engines: {node: '>=18'}
326 | cpu: [riscv64]
327 | os: [linux]
328 | dev: true
329 | optional: true
330 |
331 | /@esbuild/linux-s390x/0.25.0:
332 | resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==}
333 | engines: {node: '>=18'}
334 | cpu: [s390x]
335 | os: [linux]
336 | dev: true
337 | optional: true
338 |
339 | /@esbuild/linux-x64/0.25.0:
340 | resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==}
341 | engines: {node: '>=18'}
342 | cpu: [x64]
343 | os: [linux]
344 | dev: true
345 | optional: true
346 |
347 | /@esbuild/netbsd-arm64/0.25.0:
348 | resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==}
349 | engines: {node: '>=18'}
350 | cpu: [arm64]
351 | os: [netbsd]
352 | dev: true
353 | optional: true
354 |
355 | /@esbuild/netbsd-x64/0.25.0:
356 | resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==}
357 | engines: {node: '>=18'}
358 | cpu: [x64]
359 | os: [netbsd]
360 | dev: true
361 | optional: true
362 |
363 | /@esbuild/openbsd-arm64/0.25.0:
364 | resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==}
365 | engines: {node: '>=18'}
366 | cpu: [arm64]
367 | os: [openbsd]
368 | dev: true
369 | optional: true
370 |
371 | /@esbuild/openbsd-x64/0.25.0:
372 | resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==}
373 | engines: {node: '>=18'}
374 | cpu: [x64]
375 | os: [openbsd]
376 | dev: true
377 | optional: true
378 |
379 | /@esbuild/sunos-x64/0.25.0:
380 | resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==}
381 | engines: {node: '>=18'}
382 | cpu: [x64]
383 | os: [sunos]
384 | dev: true
385 | optional: true
386 |
387 | /@esbuild/win32-arm64/0.25.0:
388 | resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==}
389 | engines: {node: '>=18'}
390 | cpu: [arm64]
391 | os: [win32]
392 | dev: true
393 | optional: true
394 |
395 | /@esbuild/win32-ia32/0.25.0:
396 | resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==}
397 | engines: {node: '>=18'}
398 | cpu: [ia32]
399 | os: [win32]
400 | dev: true
401 | optional: true
402 |
403 | /@esbuild/win32-x64/0.25.0:
404 | resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==}
405 | engines: {node: '>=18'}
406 | cpu: [x64]
407 | os: [win32]
408 | dev: true
409 | optional: true
410 |
411 | /@huggingface/jinja/0.2.2:
412 | resolution: {integrity: sha512-/KPde26khDUIPkTGU82jdtTW9UAuvUTumCAbFs/7giR0SxsvZC4hru51PBvpijH6BVkHcROcvZM/lpy5h1jRRA==}
413 | engines: {node: '>=18'}
414 | dev: false
415 |
416 | /@isaacs/cliui/8.0.2:
417 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
418 | engines: {node: '>=12'}
419 | dependencies:
420 | string-width: 5.1.2
421 | string-width-cjs: /string-width/4.2.3
422 | strip-ansi: 7.1.0
423 | strip-ansi-cjs: /strip-ansi/6.0.1
424 | wrap-ansi: 8.1.0
425 | wrap-ansi-cjs: /wrap-ansi/7.0.0
426 | dev: true
427 |
428 | /@jridgewell/gen-mapping/0.3.8:
429 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
430 | engines: {node: '>=6.0.0'}
431 | dependencies:
432 | '@jridgewell/set-array': 1.2.1
433 | '@jridgewell/sourcemap-codec': 1.5.0
434 | '@jridgewell/trace-mapping': 0.3.25
435 | dev: true
436 |
437 | /@jridgewell/resolve-uri/3.1.2:
438 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
439 | engines: {node: '>=6.0.0'}
440 | dev: true
441 |
442 | /@jridgewell/set-array/1.2.1:
443 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
444 | engines: {node: '>=6.0.0'}
445 | dev: true
446 |
447 | /@jridgewell/sourcemap-codec/1.5.0:
448 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
449 | dev: true
450 |
451 | /@jridgewell/trace-mapping/0.3.25:
452 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
453 | dependencies:
454 | '@jridgewell/resolve-uri': 3.1.2
455 | '@jridgewell/sourcemap-codec': 1.5.0
456 | dev: true
457 |
458 | /@manypkg/find-root/1.1.0:
459 | resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==}
460 | dependencies:
461 | '@babel/runtime': 7.26.9
462 | '@types/node': 12.20.55
463 | find-up: 4.1.0
464 | fs-extra: 8.1.0
465 | dev: true
466 |
467 | /@manypkg/get-packages/1.1.3:
468 | resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==}
469 | dependencies:
470 | '@babel/runtime': 7.26.9
471 | '@changesets/types': 4.1.0
472 | '@manypkg/find-root': 1.1.0
473 | fs-extra: 8.1.0
474 | globby: 11.1.0
475 | read-yaml-file: 1.1.0
476 | dev: true
477 |
478 | /@nodelib/fs.scandir/2.1.5:
479 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
480 | engines: {node: '>= 8'}
481 | dependencies:
482 | '@nodelib/fs.stat': 2.0.5
483 | run-parallel: 1.2.0
484 | dev: true
485 |
486 | /@nodelib/fs.stat/2.0.5:
487 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
488 | engines: {node: '>= 8'}
489 | dev: true
490 |
491 | /@nodelib/fs.walk/1.2.8:
492 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
493 | engines: {node: '>= 8'}
494 | dependencies:
495 | '@nodelib/fs.scandir': 2.1.5
496 | fastq: 1.19.1
497 | dev: true
498 |
499 | /@pkgjs/parseargs/0.11.0:
500 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
501 | engines: {node: '>=14'}
502 | dev: true
503 | optional: true
504 |
505 | /@protobufjs/aspromise/1.1.2:
506 | resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
507 | dev: false
508 |
509 | /@protobufjs/base64/1.1.2:
510 | resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==}
511 | dev: false
512 |
513 | /@protobufjs/codegen/2.0.4:
514 | resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==}
515 | dev: false
516 |
517 | /@protobufjs/eventemitter/1.1.0:
518 | resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==}
519 | dev: false
520 |
521 | /@protobufjs/fetch/1.1.0:
522 | resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==}
523 | dependencies:
524 | '@protobufjs/aspromise': 1.1.2
525 | '@protobufjs/inquire': 1.1.0
526 | dev: false
527 |
528 | /@protobufjs/float/1.0.2:
529 | resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
530 | dev: false
531 |
532 | /@protobufjs/inquire/1.1.0:
533 | resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==}
534 | dev: false
535 |
536 | /@protobufjs/path/1.1.2:
537 | resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
538 | dev: false
539 |
540 | /@protobufjs/pool/1.1.0:
541 | resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
542 | dev: false
543 |
544 | /@protobufjs/utf8/1.1.0:
545 | resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
546 | dev: false
547 |
548 | /@rollup/rollup-android-arm-eabi/4.34.9:
549 | resolution: {integrity: sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA==}
550 | cpu: [arm]
551 | os: [android]
552 | dev: true
553 | optional: true
554 |
555 | /@rollup/rollup-android-arm64/4.34.9:
556 | resolution: {integrity: sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==}
557 | cpu: [arm64]
558 | os: [android]
559 | dev: true
560 | optional: true
561 |
562 | /@rollup/rollup-darwin-arm64/4.34.9:
563 | resolution: {integrity: sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==}
564 | cpu: [arm64]
565 | os: [darwin]
566 | dev: true
567 | optional: true
568 |
569 | /@rollup/rollup-darwin-x64/4.34.9:
570 | resolution: {integrity: sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==}
571 | cpu: [x64]
572 | os: [darwin]
573 | dev: true
574 | optional: true
575 |
576 | /@rollup/rollup-freebsd-arm64/4.34.9:
577 | resolution: {integrity: sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==}
578 | cpu: [arm64]
579 | os: [freebsd]
580 | dev: true
581 | optional: true
582 |
583 | /@rollup/rollup-freebsd-x64/4.34.9:
584 | resolution: {integrity: sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==}
585 | cpu: [x64]
586 | os: [freebsd]
587 | dev: true
588 | optional: true
589 |
590 | /@rollup/rollup-linux-arm-gnueabihf/4.34.9:
591 | resolution: {integrity: sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==}
592 | cpu: [arm]
593 | os: [linux]
594 | dev: true
595 | optional: true
596 |
597 | /@rollup/rollup-linux-arm-musleabihf/4.34.9:
598 | resolution: {integrity: sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==}
599 | cpu: [arm]
600 | os: [linux]
601 | dev: true
602 | optional: true
603 |
604 | /@rollup/rollup-linux-arm64-gnu/4.34.9:
605 | resolution: {integrity: sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==}
606 | cpu: [arm64]
607 | os: [linux]
608 | dev: true
609 | optional: true
610 |
611 | /@rollup/rollup-linux-arm64-musl/4.34.9:
612 | resolution: {integrity: sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==}
613 | cpu: [arm64]
614 | os: [linux]
615 | dev: true
616 | optional: true
617 |
618 | /@rollup/rollup-linux-loongarch64-gnu/4.34.9:
619 | resolution: {integrity: sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==}
620 | cpu: [loong64]
621 | os: [linux]
622 | dev: true
623 | optional: true
624 |
625 | /@rollup/rollup-linux-powerpc64le-gnu/4.34.9:
626 | resolution: {integrity: sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==}
627 | cpu: [ppc64]
628 | os: [linux]
629 | dev: true
630 | optional: true
631 |
632 | /@rollup/rollup-linux-riscv64-gnu/4.34.9:
633 | resolution: {integrity: sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==}
634 | cpu: [riscv64]
635 | os: [linux]
636 | dev: true
637 | optional: true
638 |
639 | /@rollup/rollup-linux-s390x-gnu/4.34.9:
640 | resolution: {integrity: sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==}
641 | cpu: [s390x]
642 | os: [linux]
643 | dev: true
644 | optional: true
645 |
646 | /@rollup/rollup-linux-x64-gnu/4.34.9:
647 | resolution: {integrity: sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==}
648 | cpu: [x64]
649 | os: [linux]
650 | dev: true
651 | optional: true
652 |
653 | /@rollup/rollup-linux-x64-musl/4.34.9:
654 | resolution: {integrity: sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==}
655 | cpu: [x64]
656 | os: [linux]
657 | dev: true
658 | optional: true
659 |
660 | /@rollup/rollup-win32-arm64-msvc/4.34.9:
661 | resolution: {integrity: sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==}
662 | cpu: [arm64]
663 | os: [win32]
664 | dev: true
665 | optional: true
666 |
667 | /@rollup/rollup-win32-ia32-msvc/4.34.9:
668 | resolution: {integrity: sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==}
669 | cpu: [ia32]
670 | os: [win32]
671 | dev: true
672 | optional: true
673 |
674 | /@rollup/rollup-win32-x64-msvc/4.34.9:
675 | resolution: {integrity: sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==}
676 | cpu: [x64]
677 | os: [win32]
678 | dev: true
679 | optional: true
680 |
681 | /@types/estree/1.0.6:
682 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
683 | dev: true
684 |
685 | /@types/long/4.0.2:
686 | resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==}
687 | dev: false
688 |
689 | /@types/node/12.20.55:
690 | resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
691 | dev: true
692 |
693 | /@types/node/22.13.8:
694 | resolution: {integrity: sha512-G3EfaZS+iOGYWLLRCEAXdWK9my08oHNZ+FHluRiggIYJPOXzhOiDgpVCUHaUvyIC5/fj7C/p637jdzC666AOKQ==}
695 | dependencies:
696 | undici-types: 6.20.0
697 | dev: false
698 |
699 | /@xenova/transformers/2.17.2:
700 | resolution: {integrity: sha512-lZmHqzrVIkSvZdKZEx7IYY51TK0WDrC8eR0c5IMnBsO8di8are1zzw8BlLhyO2TklZKLN5UffNGs1IJwT6oOqQ==}
701 | dependencies:
702 | '@huggingface/jinja': 0.2.2
703 | onnxruntime-web: 1.14.0
704 | sharp: 0.32.6
705 | optionalDependencies:
706 | onnxruntime-node: 1.14.0
707 | transitivePeerDependencies:
708 | - bare-buffer
709 | dev: false
710 |
711 | /ansi-colors/4.1.3:
712 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
713 | engines: {node: '>=6'}
714 | dev: true
715 |
716 | /ansi-regex/5.0.1:
717 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
718 | engines: {node: '>=8'}
719 | dev: true
720 |
721 | /ansi-regex/6.1.0:
722 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
723 | engines: {node: '>=12'}
724 | dev: true
725 |
726 | /ansi-styles/4.3.0:
727 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
728 | engines: {node: '>=8'}
729 | dependencies:
730 | color-convert: 2.0.1
731 | dev: true
732 |
733 | /ansi-styles/6.2.1:
734 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
735 | engines: {node: '>=12'}
736 | dev: true
737 |
738 | /any-promise/1.3.0:
739 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
740 | dev: true
741 |
742 | /argparse/1.0.10:
743 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
744 | dependencies:
745 | sprintf-js: 1.0.3
746 | dev: true
747 |
748 | /array-union/2.1.0:
749 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
750 | engines: {node: '>=8'}
751 | dev: true
752 |
753 | /b4a/1.6.7:
754 | resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==}
755 | dev: false
756 |
757 | /balanced-match/1.0.2:
758 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
759 | dev: true
760 |
761 | /bare-events/2.5.4:
762 | resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==}
763 | dev: false
764 | optional: true
765 |
766 | /bare-fs/4.0.1:
767 | resolution: {integrity: sha512-ilQs4fm/l9eMfWY2dY0WCIUplSUp7U0CT1vrqMg1MUdeZl4fypu5UP0XcDBK5WBQPJAKP1b7XEodISmekH/CEg==}
768 | engines: {bare: '>=1.7.0'}
769 | dependencies:
770 | bare-events: 2.5.4
771 | bare-path: 3.0.0
772 | bare-stream: 2.6.5_bare-events@2.5.4
773 | transitivePeerDependencies:
774 | - bare-buffer
775 | dev: false
776 | optional: true
777 |
778 | /bare-os/3.5.1:
779 | resolution: {integrity: sha512-LvfVNDcWLw2AnIw5f2mWUgumW3I3N/WYGiWeimhQC1Ybt71n2FjlS9GJKeCnFeg1MKZHxzIFmpFnBXDI+sBeFg==}
780 | engines: {bare: '>=1.14.0'}
781 | dev: false
782 | optional: true
783 |
784 | /bare-path/3.0.0:
785 | resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==}
786 | dependencies:
787 | bare-os: 3.5.1
788 | dev: false
789 | optional: true
790 |
791 | /bare-stream/2.6.5_bare-events@2.5.4:
792 | resolution: {integrity: sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==}
793 | peerDependencies:
794 | bare-buffer: '*'
795 | bare-events: '*'
796 | peerDependenciesMeta:
797 | bare-buffer:
798 | optional: true
799 | bare-events:
800 | optional: true
801 | dependencies:
802 | bare-events: 2.5.4
803 | streamx: 2.22.0
804 | dev: false
805 | optional: true
806 |
807 | /base64-js/1.5.1:
808 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
809 | dev: false
810 |
811 | /better-path-resolve/1.0.0:
812 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==}
813 | engines: {node: '>=4'}
814 | dependencies:
815 | is-windows: 1.0.2
816 | dev: true
817 |
818 | /bl/4.1.0:
819 | resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
820 | dependencies:
821 | buffer: 5.7.1
822 | inherits: 2.0.4
823 | readable-stream: 3.6.2
824 | dev: false
825 |
826 | /brace-expansion/2.0.1:
827 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
828 | dependencies:
829 | balanced-match: 1.0.2
830 | dev: true
831 |
832 | /braces/3.0.3:
833 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
834 | engines: {node: '>=8'}
835 | dependencies:
836 | fill-range: 7.1.1
837 | dev: true
838 |
839 | /buffer/5.7.1:
840 | resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
841 | dependencies:
842 | base64-js: 1.5.1
843 | ieee754: 1.2.1
844 | dev: false
845 |
846 | /bundle-require/5.1.0_esbuild@0.25.0:
847 | resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==}
848 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
849 | peerDependencies:
850 | esbuild: '>=0.18'
851 | dependencies:
852 | esbuild: 0.25.0
853 | load-tsconfig: 0.2.5
854 | dev: true
855 |
856 | /cac/6.7.14:
857 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
858 | engines: {node: '>=8'}
859 | dev: true
860 |
861 | /chardet/0.7.0:
862 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
863 | dev: true
864 |
865 | /chokidar/4.0.3:
866 | resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
867 | engines: {node: '>= 14.16.0'}
868 | dependencies:
869 | readdirp: 4.1.2
870 | dev: true
871 |
872 | /chownr/1.1.4:
873 | resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
874 | dev: false
875 |
876 | /ci-info/3.9.0:
877 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
878 | engines: {node: '>=8'}
879 | dev: true
880 |
881 | /color-convert/2.0.1:
882 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
883 | engines: {node: '>=7.0.0'}
884 | dependencies:
885 | color-name: 1.1.4
886 |
887 | /color-name/1.1.4:
888 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
889 |
890 | /color-string/1.9.1:
891 | resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
892 | dependencies:
893 | color-name: 1.1.4
894 | simple-swizzle: 0.2.2
895 | dev: false
896 |
897 | /color/4.2.3:
898 | resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
899 | engines: {node: '>=12.5.0'}
900 | dependencies:
901 | color-convert: 2.0.1
902 | color-string: 1.9.1
903 | dev: false
904 |
905 | /commander/4.1.1:
906 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
907 | engines: {node: '>= 6'}
908 | dev: true
909 |
910 | /consola/3.4.0:
911 | resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==}
912 | engines: {node: ^14.18.0 || >=16.10.0}
913 | dev: true
914 |
915 | /cross-spawn/7.0.6:
916 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
917 | engines: {node: '>= 8'}
918 | dependencies:
919 | path-key: 3.1.1
920 | shebang-command: 2.0.0
921 | which: 2.0.2
922 | dev: true
923 |
924 | /debug/4.4.0:
925 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
926 | engines: {node: '>=6.0'}
927 | peerDependencies:
928 | supports-color: '*'
929 | peerDependenciesMeta:
930 | supports-color:
931 | optional: true
932 | dependencies:
933 | ms: 2.1.3
934 | dev: true
935 |
936 | /decompress-response/6.0.0:
937 | resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
938 | engines: {node: '>=10'}
939 | dependencies:
940 | mimic-response: 3.1.0
941 | dev: false
942 |
943 | /deep-extend/0.6.0:
944 | resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
945 | engines: {node: '>=4.0.0'}
946 | dev: false
947 |
948 | /detect-indent/6.1.0:
949 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
950 | engines: {node: '>=8'}
951 | dev: true
952 |
953 | /detect-libc/2.0.3:
954 | resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
955 | engines: {node: '>=8'}
956 | dev: false
957 |
958 | /dir-glob/3.0.1:
959 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
960 | engines: {node: '>=8'}
961 | dependencies:
962 | path-type: 4.0.0
963 | dev: true
964 |
965 | /eastasianwidth/0.2.0:
966 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
967 | dev: true
968 |
969 | /emoji-regex/8.0.0:
970 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
971 | dev: true
972 |
973 | /emoji-regex/9.2.2:
974 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
975 | dev: true
976 |
977 | /end-of-stream/1.4.4:
978 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
979 | dependencies:
980 | once: 1.4.0
981 | dev: false
982 |
983 | /enquirer/2.4.1:
984 | resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
985 | engines: {node: '>=8.6'}
986 | dependencies:
987 | ansi-colors: 4.1.3
988 | strip-ansi: 6.0.1
989 | dev: true
990 |
991 | /esbuild/0.25.0:
992 | resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==}
993 | engines: {node: '>=18'}
994 | hasBin: true
995 | requiresBuild: true
996 | optionalDependencies:
997 | '@esbuild/aix-ppc64': 0.25.0
998 | '@esbuild/android-arm': 0.25.0
999 | '@esbuild/android-arm64': 0.25.0
1000 | '@esbuild/android-x64': 0.25.0
1001 | '@esbuild/darwin-arm64': 0.25.0
1002 | '@esbuild/darwin-x64': 0.25.0
1003 | '@esbuild/freebsd-arm64': 0.25.0
1004 | '@esbuild/freebsd-x64': 0.25.0
1005 | '@esbuild/linux-arm': 0.25.0
1006 | '@esbuild/linux-arm64': 0.25.0
1007 | '@esbuild/linux-ia32': 0.25.0
1008 | '@esbuild/linux-loong64': 0.25.0
1009 | '@esbuild/linux-mips64el': 0.25.0
1010 | '@esbuild/linux-ppc64': 0.25.0
1011 | '@esbuild/linux-riscv64': 0.25.0
1012 | '@esbuild/linux-s390x': 0.25.0
1013 | '@esbuild/linux-x64': 0.25.0
1014 | '@esbuild/netbsd-arm64': 0.25.0
1015 | '@esbuild/netbsd-x64': 0.25.0
1016 | '@esbuild/openbsd-arm64': 0.25.0
1017 | '@esbuild/openbsd-x64': 0.25.0
1018 | '@esbuild/sunos-x64': 0.25.0
1019 | '@esbuild/win32-arm64': 0.25.0
1020 | '@esbuild/win32-ia32': 0.25.0
1021 | '@esbuild/win32-x64': 0.25.0
1022 | dev: true
1023 |
1024 | /esprima/4.0.1:
1025 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
1026 | engines: {node: '>=4'}
1027 | hasBin: true
1028 | dev: true
1029 |
1030 | /expand-template/2.0.3:
1031 | resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
1032 | engines: {node: '>=6'}
1033 | dev: false
1034 |
1035 | /extendable-error/0.1.7:
1036 | resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==}
1037 | dev: true
1038 |
1039 | /external-editor/3.1.0:
1040 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
1041 | engines: {node: '>=4'}
1042 | dependencies:
1043 | chardet: 0.7.0
1044 | iconv-lite: 0.4.24
1045 | tmp: 0.0.33
1046 | dev: true
1047 |
1048 | /fast-fifo/1.3.2:
1049 | resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
1050 | dev: false
1051 |
1052 | /fast-glob/3.3.3:
1053 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
1054 | engines: {node: '>=8.6.0'}
1055 | dependencies:
1056 | '@nodelib/fs.stat': 2.0.5
1057 | '@nodelib/fs.walk': 1.2.8
1058 | glob-parent: 5.1.2
1059 | merge2: 1.4.1
1060 | micromatch: 4.0.8
1061 | dev: true
1062 |
1063 | /fastq/1.19.1:
1064 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
1065 | dependencies:
1066 | reusify: 1.1.0
1067 | dev: true
1068 |
1069 | /fdir/6.4.3_picomatch@4.0.2:
1070 | resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==}
1071 | peerDependencies:
1072 | picomatch: ^3 || ^4
1073 | peerDependenciesMeta:
1074 | picomatch:
1075 | optional: true
1076 | dependencies:
1077 | picomatch: 4.0.2
1078 | dev: true
1079 |
1080 | /fill-range/7.1.1:
1081 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
1082 | engines: {node: '>=8'}
1083 | dependencies:
1084 | to-regex-range: 5.0.1
1085 | dev: true
1086 |
1087 | /find-up/4.1.0:
1088 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
1089 | engines: {node: '>=8'}
1090 | dependencies:
1091 | locate-path: 5.0.0
1092 | path-exists: 4.0.0
1093 | dev: true
1094 |
1095 | /flatbuffers/1.12.0:
1096 | resolution: {integrity: sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==}
1097 | dev: false
1098 |
1099 | /foreground-child/3.3.1:
1100 | resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
1101 | engines: {node: '>=14'}
1102 | dependencies:
1103 | cross-spawn: 7.0.6
1104 | signal-exit: 4.1.0
1105 | dev: true
1106 |
1107 | /fs-constants/1.0.0:
1108 | resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
1109 | dev: false
1110 |
1111 | /fs-extra/7.0.1:
1112 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
1113 | engines: {node: '>=6 <7 || >=8'}
1114 | dependencies:
1115 | graceful-fs: 4.2.11
1116 | jsonfile: 4.0.0
1117 | universalify: 0.1.2
1118 | dev: true
1119 |
1120 | /fs-extra/8.1.0:
1121 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
1122 | engines: {node: '>=6 <7 || >=8'}
1123 | dependencies:
1124 | graceful-fs: 4.2.11
1125 | jsonfile: 4.0.0
1126 | universalify: 0.1.2
1127 | dev: true
1128 |
1129 | /fsevents/2.3.3:
1130 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
1131 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1132 | os: [darwin]
1133 | dev: true
1134 | optional: true
1135 |
1136 | /github-from-package/0.0.0:
1137 | resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
1138 | dev: false
1139 |
1140 | /glob-parent/5.1.2:
1141 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1142 | engines: {node: '>= 6'}
1143 | dependencies:
1144 | is-glob: 4.0.3
1145 | dev: true
1146 |
1147 | /glob/10.4.5:
1148 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
1149 | hasBin: true
1150 | dependencies:
1151 | foreground-child: 3.3.1
1152 | jackspeak: 3.4.3
1153 | minimatch: 9.0.5
1154 | minipass: 7.1.2
1155 | package-json-from-dist: 1.0.1
1156 | path-scurry: 1.11.1
1157 | dev: true
1158 |
1159 | /globby/11.1.0:
1160 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1161 | engines: {node: '>=10'}
1162 | dependencies:
1163 | array-union: 2.1.0
1164 | dir-glob: 3.0.1
1165 | fast-glob: 3.3.3
1166 | ignore: 5.3.2
1167 | merge2: 1.4.1
1168 | slash: 3.0.0
1169 | dev: true
1170 |
1171 | /graceful-fs/4.2.11:
1172 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1173 | dev: true
1174 |
1175 | /guid-typescript/1.0.9:
1176 | resolution: {integrity: sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==}
1177 | dev: false
1178 |
1179 | /human-id/4.1.1:
1180 | resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==}
1181 | hasBin: true
1182 | dev: true
1183 |
1184 | /iconv-lite/0.4.24:
1185 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
1186 | engines: {node: '>=0.10.0'}
1187 | dependencies:
1188 | safer-buffer: 2.1.2
1189 | dev: true
1190 |
1191 | /ieee754/1.2.1:
1192 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
1193 | dev: false
1194 |
1195 | /ignore/5.3.2:
1196 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
1197 | engines: {node: '>= 4'}
1198 | dev: true
1199 |
1200 | /inherits/2.0.4:
1201 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1202 | dev: false
1203 |
1204 | /ini/1.3.8:
1205 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
1206 | dev: false
1207 |
1208 | /is-arrayish/0.3.2:
1209 | resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
1210 | dev: false
1211 |
1212 | /is-extglob/2.1.1:
1213 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1214 | engines: {node: '>=0.10.0'}
1215 | dev: true
1216 |
1217 | /is-fullwidth-code-point/3.0.0:
1218 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
1219 | engines: {node: '>=8'}
1220 | dev: true
1221 |
1222 | /is-glob/4.0.3:
1223 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1224 | engines: {node: '>=0.10.0'}
1225 | dependencies:
1226 | is-extglob: 2.1.1
1227 | dev: true
1228 |
1229 | /is-number/7.0.0:
1230 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1231 | engines: {node: '>=0.12.0'}
1232 | dev: true
1233 |
1234 | /is-subdir/1.2.0:
1235 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==}
1236 | engines: {node: '>=4'}
1237 | dependencies:
1238 | better-path-resolve: 1.0.0
1239 | dev: true
1240 |
1241 | /is-windows/1.0.2:
1242 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
1243 | engines: {node: '>=0.10.0'}
1244 | dev: true
1245 |
1246 | /isexe/2.0.0:
1247 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1248 | dev: true
1249 |
1250 | /jackspeak/3.4.3:
1251 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
1252 | dependencies:
1253 | '@isaacs/cliui': 8.0.2
1254 | optionalDependencies:
1255 | '@pkgjs/parseargs': 0.11.0
1256 | dev: true
1257 |
1258 | /joycon/3.1.1:
1259 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
1260 | engines: {node: '>=10'}
1261 | dev: true
1262 |
1263 | /js-yaml/3.14.1:
1264 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
1265 | hasBin: true
1266 | dependencies:
1267 | argparse: 1.0.10
1268 | esprima: 4.0.1
1269 | dev: true
1270 |
1271 | /jsonfile/4.0.0:
1272 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
1273 | optionalDependencies:
1274 | graceful-fs: 4.2.11
1275 | dev: true
1276 |
1277 | /lilconfig/3.1.3:
1278 | resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
1279 | engines: {node: '>=14'}
1280 | dev: true
1281 |
1282 | /lines-and-columns/1.2.4:
1283 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1284 | dev: true
1285 |
1286 | /load-tsconfig/0.2.5:
1287 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
1288 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1289 | dev: true
1290 |
1291 | /locate-path/5.0.0:
1292 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
1293 | engines: {node: '>=8'}
1294 | dependencies:
1295 | p-locate: 4.1.0
1296 | dev: true
1297 |
1298 | /lodash.sortby/4.7.0:
1299 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
1300 | dev: true
1301 |
1302 | /lodash.startcase/4.4.0:
1303 | resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
1304 | dev: true
1305 |
1306 | /long/4.0.0:
1307 | resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==}
1308 | dev: false
1309 |
1310 | /long/5.3.1:
1311 | resolution: {integrity: sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng==}
1312 | dev: false
1313 |
1314 | /lru-cache/10.4.3:
1315 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
1316 | dev: true
1317 |
1318 | /merge2/1.4.1:
1319 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1320 | engines: {node: '>= 8'}
1321 | dev: true
1322 |
1323 | /micromatch/4.0.8:
1324 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
1325 | engines: {node: '>=8.6'}
1326 | dependencies:
1327 | braces: 3.0.3
1328 | picomatch: 2.3.1
1329 | dev: true
1330 |
1331 | /mimic-response/3.1.0:
1332 | resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
1333 | engines: {node: '>=10'}
1334 | dev: false
1335 |
1336 | /minimatch/9.0.5:
1337 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
1338 | engines: {node: '>=16 || 14 >=14.17'}
1339 | dependencies:
1340 | brace-expansion: 2.0.1
1341 | dev: true
1342 |
1343 | /minimist/1.2.8:
1344 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
1345 | dev: false
1346 |
1347 | /minipass/7.1.2:
1348 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
1349 | engines: {node: '>=16 || 14 >=14.17'}
1350 | dev: true
1351 |
1352 | /mkdirp-classic/0.5.3:
1353 | resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
1354 | dev: false
1355 |
1356 | /mri/1.2.0:
1357 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
1358 | engines: {node: '>=4'}
1359 | dev: true
1360 |
1361 | /ms/2.1.3:
1362 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1363 | dev: true
1364 |
1365 | /mz/2.7.0:
1366 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
1367 | dependencies:
1368 | any-promise: 1.3.0
1369 | object-assign: 4.1.1
1370 | thenify-all: 1.6.0
1371 | dev: true
1372 |
1373 | /napi-build-utils/2.0.0:
1374 | resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==}
1375 | dev: false
1376 |
1377 | /node-abi/3.74.0:
1378 | resolution: {integrity: sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==}
1379 | engines: {node: '>=10'}
1380 | dependencies:
1381 | semver: 7.7.1
1382 | dev: false
1383 |
1384 | /node-addon-api/6.1.0:
1385 | resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
1386 | dev: false
1387 |
1388 | /object-assign/4.1.1:
1389 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1390 | engines: {node: '>=0.10.0'}
1391 | dev: true
1392 |
1393 | /once/1.4.0:
1394 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1395 | dependencies:
1396 | wrappy: 1.0.2
1397 | dev: false
1398 |
1399 | /onnx-proto/4.0.4:
1400 | resolution: {integrity: sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==}
1401 | dependencies:
1402 | protobufjs: 6.11.4
1403 | dev: false
1404 |
1405 | /onnxruntime-common/1.14.0:
1406 | resolution: {integrity: sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew==}
1407 | dev: false
1408 |
1409 | /onnxruntime-common/1.19.2:
1410 | resolution: {integrity: sha512-a4R7wYEVFbZBlp0BfhpbFWqe4opCor3KM+5Wm22Az3NGDcQMiU2hfG/0MfnBs+1ZrlSGmlgWeMcXQkDk1UFb8Q==}
1411 | dev: false
1412 |
1413 | /onnxruntime-node/1.14.0:
1414 | resolution: {integrity: sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w==}
1415 | os: [win32, darwin, linux]
1416 | dependencies:
1417 | onnxruntime-common: 1.14.0
1418 | dev: false
1419 | optional: true
1420 |
1421 | /onnxruntime-web/1.14.0:
1422 | resolution: {integrity: sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==}
1423 | dependencies:
1424 | flatbuffers: 1.12.0
1425 | guid-typescript: 1.0.9
1426 | long: 4.0.0
1427 | onnx-proto: 4.0.4
1428 | onnxruntime-common: 1.14.0
1429 | platform: 1.3.6
1430 | dev: false
1431 |
1432 | /onnxruntime-web/1.19.2:
1433 | resolution: {integrity: sha512-r0ok6KpTUXR4WA+rHvUiZn7JoH02e8iS7XE1p5bXk7q3E0UaRFfYvpMNUHqEPiTBMuIssfBxDCQjUihV8dDFPg==}
1434 | dependencies:
1435 | flatbuffers: 1.12.0
1436 | guid-typescript: 1.0.9
1437 | long: 5.3.1
1438 | onnxruntime-common: 1.19.2
1439 | platform: 1.3.6
1440 | protobufjs: 7.4.0
1441 | dev: false
1442 |
1443 | /os-tmpdir/1.0.2:
1444 | resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
1445 | engines: {node: '>=0.10.0'}
1446 | dev: true
1447 |
1448 | /outdent/0.5.0:
1449 | resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==}
1450 | dev: true
1451 |
1452 | /p-filter/2.1.0:
1453 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==}
1454 | engines: {node: '>=8'}
1455 | dependencies:
1456 | p-map: 2.1.0
1457 | dev: true
1458 |
1459 | /p-limit/2.3.0:
1460 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
1461 | engines: {node: '>=6'}
1462 | dependencies:
1463 | p-try: 2.2.0
1464 | dev: true
1465 |
1466 | /p-locate/4.1.0:
1467 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
1468 | engines: {node: '>=8'}
1469 | dependencies:
1470 | p-limit: 2.3.0
1471 | dev: true
1472 |
1473 | /p-map/2.1.0:
1474 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
1475 | engines: {node: '>=6'}
1476 | dev: true
1477 |
1478 | /p-try/2.2.0:
1479 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
1480 | engines: {node: '>=6'}
1481 | dev: true
1482 |
1483 | /package-json-from-dist/1.0.1:
1484 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
1485 | dev: true
1486 |
1487 | /package-manager-detector/0.2.11:
1488 | resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==}
1489 | dependencies:
1490 | quansync: 0.2.7
1491 | dev: true
1492 |
1493 | /path-exists/4.0.0:
1494 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1495 | engines: {node: '>=8'}
1496 | dev: true
1497 |
1498 | /path-key/3.1.1:
1499 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1500 | engines: {node: '>=8'}
1501 | dev: true
1502 |
1503 | /path-scurry/1.11.1:
1504 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
1505 | engines: {node: '>=16 || 14 >=14.18'}
1506 | dependencies:
1507 | lru-cache: 10.4.3
1508 | minipass: 7.1.2
1509 | dev: true
1510 |
1511 | /path-type/4.0.0:
1512 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1513 | engines: {node: '>=8'}
1514 | dev: true
1515 |
1516 | /picocolors/1.1.1:
1517 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
1518 | dev: true
1519 |
1520 | /picomatch/2.3.1:
1521 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1522 | engines: {node: '>=8.6'}
1523 | dev: true
1524 |
1525 | /picomatch/4.0.2:
1526 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
1527 | engines: {node: '>=12'}
1528 | dev: true
1529 |
1530 | /pify/4.0.1:
1531 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
1532 | engines: {node: '>=6'}
1533 | dev: true
1534 |
1535 | /pirates/4.0.6:
1536 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
1537 | engines: {node: '>= 6'}
1538 | dev: true
1539 |
1540 | /platform/1.3.6:
1541 | resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==}
1542 | dev: false
1543 |
1544 | /postcss-load-config/6.0.1:
1545 | resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==}
1546 | engines: {node: '>= 18'}
1547 | peerDependencies:
1548 | jiti: '>=1.21.0'
1549 | postcss: '>=8.0.9'
1550 | tsx: ^4.8.1
1551 | yaml: ^2.4.2
1552 | peerDependenciesMeta:
1553 | jiti:
1554 | optional: true
1555 | postcss:
1556 | optional: true
1557 | tsx:
1558 | optional: true
1559 | yaml:
1560 | optional: true
1561 | dependencies:
1562 | lilconfig: 3.1.3
1563 | dev: true
1564 |
1565 | /prebuild-install/7.1.3:
1566 | resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==}
1567 | engines: {node: '>=10'}
1568 | hasBin: true
1569 | dependencies:
1570 | detect-libc: 2.0.3
1571 | expand-template: 2.0.3
1572 | github-from-package: 0.0.0
1573 | minimist: 1.2.8
1574 | mkdirp-classic: 0.5.3
1575 | napi-build-utils: 2.0.0
1576 | node-abi: 3.74.0
1577 | pump: 3.0.2
1578 | rc: 1.2.8
1579 | simple-get: 4.0.1
1580 | tar-fs: 2.1.2
1581 | tunnel-agent: 0.6.0
1582 | dev: false
1583 |
1584 | /prettier/2.8.8:
1585 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
1586 | engines: {node: '>=10.13.0'}
1587 | hasBin: true
1588 | dev: true
1589 |
1590 | /prettier/3.5.2:
1591 | resolution: {integrity: sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==}
1592 | engines: {node: '>=14'}
1593 | hasBin: true
1594 | dev: true
1595 |
1596 | /protobufjs/6.11.4:
1597 | resolution: {integrity: sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==}
1598 | hasBin: true
1599 | requiresBuild: true
1600 | dependencies:
1601 | '@protobufjs/aspromise': 1.1.2
1602 | '@protobufjs/base64': 1.1.2
1603 | '@protobufjs/codegen': 2.0.4
1604 | '@protobufjs/eventemitter': 1.1.0
1605 | '@protobufjs/fetch': 1.1.0
1606 | '@protobufjs/float': 1.0.2
1607 | '@protobufjs/inquire': 1.1.0
1608 | '@protobufjs/path': 1.1.2
1609 | '@protobufjs/pool': 1.1.0
1610 | '@protobufjs/utf8': 1.1.0
1611 | '@types/long': 4.0.2
1612 | '@types/node': 22.13.8
1613 | long: 4.0.0
1614 | dev: false
1615 |
1616 | /protobufjs/7.4.0:
1617 | resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==}
1618 | engines: {node: '>=12.0.0'}
1619 | requiresBuild: true
1620 | dependencies:
1621 | '@protobufjs/aspromise': 1.1.2
1622 | '@protobufjs/base64': 1.1.2
1623 | '@protobufjs/codegen': 2.0.4
1624 | '@protobufjs/eventemitter': 1.1.0
1625 | '@protobufjs/fetch': 1.1.0
1626 | '@protobufjs/float': 1.0.2
1627 | '@protobufjs/inquire': 1.1.0
1628 | '@protobufjs/path': 1.1.2
1629 | '@protobufjs/pool': 1.1.0
1630 | '@protobufjs/utf8': 1.1.0
1631 | '@types/node': 22.13.8
1632 | long: 5.3.1
1633 | dev: false
1634 |
1635 | /pump/3.0.2:
1636 | resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==}
1637 | dependencies:
1638 | end-of-stream: 1.4.4
1639 | once: 1.4.0
1640 | dev: false
1641 |
1642 | /punycode/2.3.1:
1643 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1644 | engines: {node: '>=6'}
1645 | dev: true
1646 |
1647 | /quansync/0.2.7:
1648 | resolution: {integrity: sha512-KZDFlN9/Si3CgKHZsIfLBsrjWKFjqu9KA0zDGJEQoQzPm5HWNDEFc2mkLeYUBBOwEJtxNBSMaNLE/GlvArIEfQ==}
1649 | dev: true
1650 |
1651 | /queue-microtask/1.2.3:
1652 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1653 | dev: true
1654 |
1655 | /rc/1.2.8:
1656 | resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
1657 | hasBin: true
1658 | dependencies:
1659 | deep-extend: 0.6.0
1660 | ini: 1.3.8
1661 | minimist: 1.2.8
1662 | strip-json-comments: 2.0.1
1663 | dev: false
1664 |
1665 | /read-yaml-file/1.1.0:
1666 | resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==}
1667 | engines: {node: '>=6'}
1668 | dependencies:
1669 | graceful-fs: 4.2.11
1670 | js-yaml: 3.14.1
1671 | pify: 4.0.1
1672 | strip-bom: 3.0.0
1673 | dev: true
1674 |
1675 | /readable-stream/3.6.2:
1676 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
1677 | engines: {node: '>= 6'}
1678 | dependencies:
1679 | inherits: 2.0.4
1680 | string_decoder: 1.3.0
1681 | util-deprecate: 1.0.2
1682 | dev: false
1683 |
1684 | /readdirp/4.1.2:
1685 | resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
1686 | engines: {node: '>= 14.18.0'}
1687 | dev: true
1688 |
1689 | /regenerator-runtime/0.14.1:
1690 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
1691 | dev: true
1692 |
1693 | /resolve-from/5.0.0:
1694 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
1695 | engines: {node: '>=8'}
1696 | dev: true
1697 |
1698 | /reusify/1.1.0:
1699 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
1700 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1701 | dev: true
1702 |
1703 | /rollup/4.34.9:
1704 | resolution: {integrity: sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==}
1705 | engines: {node: '>=18.0.0', npm: '>=8.0.0'}
1706 | hasBin: true
1707 | dependencies:
1708 | '@types/estree': 1.0.6
1709 | optionalDependencies:
1710 | '@rollup/rollup-android-arm-eabi': 4.34.9
1711 | '@rollup/rollup-android-arm64': 4.34.9
1712 | '@rollup/rollup-darwin-arm64': 4.34.9
1713 | '@rollup/rollup-darwin-x64': 4.34.9
1714 | '@rollup/rollup-freebsd-arm64': 4.34.9
1715 | '@rollup/rollup-freebsd-x64': 4.34.9
1716 | '@rollup/rollup-linux-arm-gnueabihf': 4.34.9
1717 | '@rollup/rollup-linux-arm-musleabihf': 4.34.9
1718 | '@rollup/rollup-linux-arm64-gnu': 4.34.9
1719 | '@rollup/rollup-linux-arm64-musl': 4.34.9
1720 | '@rollup/rollup-linux-loongarch64-gnu': 4.34.9
1721 | '@rollup/rollup-linux-powerpc64le-gnu': 4.34.9
1722 | '@rollup/rollup-linux-riscv64-gnu': 4.34.9
1723 | '@rollup/rollup-linux-s390x-gnu': 4.34.9
1724 | '@rollup/rollup-linux-x64-gnu': 4.34.9
1725 | '@rollup/rollup-linux-x64-musl': 4.34.9
1726 | '@rollup/rollup-win32-arm64-msvc': 4.34.9
1727 | '@rollup/rollup-win32-ia32-msvc': 4.34.9
1728 | '@rollup/rollup-win32-x64-msvc': 4.34.9
1729 | fsevents: 2.3.3
1730 | dev: true
1731 |
1732 | /run-parallel/1.2.0:
1733 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1734 | dependencies:
1735 | queue-microtask: 1.2.3
1736 | dev: true
1737 |
1738 | /safe-buffer/5.2.1:
1739 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
1740 | dev: false
1741 |
1742 | /safer-buffer/2.1.2:
1743 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
1744 | dev: true
1745 |
1746 | /semver/7.7.1:
1747 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
1748 | engines: {node: '>=10'}
1749 | hasBin: true
1750 |
1751 | /sharp/0.32.6:
1752 | resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==}
1753 | engines: {node: '>=14.15.0'}
1754 | requiresBuild: true
1755 | dependencies:
1756 | color: 4.2.3
1757 | detect-libc: 2.0.3
1758 | node-addon-api: 6.1.0
1759 | prebuild-install: 7.1.3
1760 | semver: 7.7.1
1761 | simple-get: 4.0.1
1762 | tar-fs: 3.0.8
1763 | tunnel-agent: 0.6.0
1764 | transitivePeerDependencies:
1765 | - bare-buffer
1766 | dev: false
1767 |
1768 | /shebang-command/2.0.0:
1769 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1770 | engines: {node: '>=8'}
1771 | dependencies:
1772 | shebang-regex: 3.0.0
1773 | dev: true
1774 |
1775 | /shebang-regex/3.0.0:
1776 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1777 | engines: {node: '>=8'}
1778 | dev: true
1779 |
1780 | /signal-exit/4.1.0:
1781 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
1782 | engines: {node: '>=14'}
1783 | dev: true
1784 |
1785 | /simple-concat/1.0.1:
1786 | resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
1787 | dev: false
1788 |
1789 | /simple-get/4.0.1:
1790 | resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==}
1791 | dependencies:
1792 | decompress-response: 6.0.0
1793 | once: 1.4.0
1794 | simple-concat: 1.0.1
1795 | dev: false
1796 |
1797 | /simple-swizzle/0.2.2:
1798 | resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
1799 | dependencies:
1800 | is-arrayish: 0.3.2
1801 | dev: false
1802 |
1803 | /slash/3.0.0:
1804 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1805 | engines: {node: '>=8'}
1806 | dev: true
1807 |
1808 | /source-map/0.8.0-beta.0:
1809 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
1810 | engines: {node: '>= 8'}
1811 | dependencies:
1812 | whatwg-url: 7.1.0
1813 | dev: true
1814 |
1815 | /spawndamnit/3.0.1:
1816 | resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==}
1817 | dependencies:
1818 | cross-spawn: 7.0.6
1819 | signal-exit: 4.1.0
1820 | dev: true
1821 |
1822 | /sprintf-js/1.0.3:
1823 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
1824 | dev: true
1825 |
1826 | /streamx/2.22.0:
1827 | resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==}
1828 | dependencies:
1829 | fast-fifo: 1.3.2
1830 | text-decoder: 1.2.3
1831 | optionalDependencies:
1832 | bare-events: 2.5.4
1833 | dev: false
1834 |
1835 | /string-width/4.2.3:
1836 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1837 | engines: {node: '>=8'}
1838 | dependencies:
1839 | emoji-regex: 8.0.0
1840 | is-fullwidth-code-point: 3.0.0
1841 | strip-ansi: 6.0.1
1842 | dev: true
1843 |
1844 | /string-width/5.1.2:
1845 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
1846 | engines: {node: '>=12'}
1847 | dependencies:
1848 | eastasianwidth: 0.2.0
1849 | emoji-regex: 9.2.2
1850 | strip-ansi: 7.1.0
1851 | dev: true
1852 |
1853 | /string_decoder/1.3.0:
1854 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
1855 | dependencies:
1856 | safe-buffer: 5.2.1
1857 | dev: false
1858 |
1859 | /strip-ansi/6.0.1:
1860 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1861 | engines: {node: '>=8'}
1862 | dependencies:
1863 | ansi-regex: 5.0.1
1864 | dev: true
1865 |
1866 | /strip-ansi/7.1.0:
1867 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
1868 | engines: {node: '>=12'}
1869 | dependencies:
1870 | ansi-regex: 6.1.0
1871 | dev: true
1872 |
1873 | /strip-bom/3.0.0:
1874 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
1875 | engines: {node: '>=4'}
1876 | dev: true
1877 |
1878 | /strip-json-comments/2.0.1:
1879 | resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
1880 | engines: {node: '>=0.10.0'}
1881 | dev: false
1882 |
1883 | /sucrase/3.35.0:
1884 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
1885 | engines: {node: '>=16 || 14 >=14.17'}
1886 | hasBin: true
1887 | dependencies:
1888 | '@jridgewell/gen-mapping': 0.3.8
1889 | commander: 4.1.1
1890 | glob: 10.4.5
1891 | lines-and-columns: 1.2.4
1892 | mz: 2.7.0
1893 | pirates: 4.0.6
1894 | ts-interface-checker: 0.1.13
1895 | dev: true
1896 |
1897 | /tar-fs/2.1.2:
1898 | resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==}
1899 | dependencies:
1900 | chownr: 1.1.4
1901 | mkdirp-classic: 0.5.3
1902 | pump: 3.0.2
1903 | tar-stream: 2.2.0
1904 | dev: false
1905 |
1906 | /tar-fs/3.0.8:
1907 | resolution: {integrity: sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==}
1908 | dependencies:
1909 | pump: 3.0.2
1910 | tar-stream: 3.1.7
1911 | optionalDependencies:
1912 | bare-fs: 4.0.1
1913 | bare-path: 3.0.0
1914 | transitivePeerDependencies:
1915 | - bare-buffer
1916 | dev: false
1917 |
1918 | /tar-stream/2.2.0:
1919 | resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
1920 | engines: {node: '>=6'}
1921 | dependencies:
1922 | bl: 4.1.0
1923 | end-of-stream: 1.4.4
1924 | fs-constants: 1.0.0
1925 | inherits: 2.0.4
1926 | readable-stream: 3.6.2
1927 | dev: false
1928 |
1929 | /tar-stream/3.1.7:
1930 | resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==}
1931 | dependencies:
1932 | b4a: 1.6.7
1933 | fast-fifo: 1.3.2
1934 | streamx: 2.22.0
1935 | dev: false
1936 |
1937 | /term-size/2.2.1:
1938 | resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
1939 | engines: {node: '>=8'}
1940 | dev: true
1941 |
1942 | /text-decoder/1.2.3:
1943 | resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==}
1944 | dependencies:
1945 | b4a: 1.6.7
1946 | dev: false
1947 |
1948 | /thenify-all/1.6.0:
1949 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
1950 | engines: {node: '>=0.8'}
1951 | dependencies:
1952 | thenify: 3.3.1
1953 | dev: true
1954 |
1955 | /thenify/3.3.1:
1956 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
1957 | dependencies:
1958 | any-promise: 1.3.0
1959 | dev: true
1960 |
1961 | /tinyexec/0.3.2:
1962 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
1963 | dev: true
1964 |
1965 | /tinyglobby/0.2.12:
1966 | resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==}
1967 | engines: {node: '>=12.0.0'}
1968 | dependencies:
1969 | fdir: 6.4.3_picomatch@4.0.2
1970 | picomatch: 4.0.2
1971 | dev: true
1972 |
1973 | /tmp/0.0.33:
1974 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
1975 | engines: {node: '>=0.6.0'}
1976 | dependencies:
1977 | os-tmpdir: 1.0.2
1978 | dev: true
1979 |
1980 | /to-regex-range/5.0.1:
1981 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1982 | engines: {node: '>=8.0'}
1983 | dependencies:
1984 | is-number: 7.0.0
1985 | dev: true
1986 |
1987 | /tr46/1.0.1:
1988 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
1989 | dependencies:
1990 | punycode: 2.3.1
1991 | dev: true
1992 |
1993 | /tree-kill/1.2.2:
1994 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
1995 | hasBin: true
1996 | dev: true
1997 |
1998 | /ts-interface-checker/0.1.13:
1999 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
2000 | dev: true
2001 |
2002 | /tsup/8.4.0_typescript@5.8.2:
2003 | resolution: {integrity: sha512-b+eZbPCjz10fRryaAA7C8xlIHnf8VnsaRqydheLIqwG/Mcpfk8Z5zp3HayX7GaTygkigHl5cBUs+IhcySiIexQ==}
2004 | engines: {node: '>=18'}
2005 | hasBin: true
2006 | peerDependencies:
2007 | '@microsoft/api-extractor': ^7.36.0
2008 | '@swc/core': ^1
2009 | postcss: ^8.4.12
2010 | typescript: '>=4.5.0'
2011 | peerDependenciesMeta:
2012 | '@microsoft/api-extractor':
2013 | optional: true
2014 | '@swc/core':
2015 | optional: true
2016 | postcss:
2017 | optional: true
2018 | typescript:
2019 | optional: true
2020 | dependencies:
2021 | bundle-require: 5.1.0_esbuild@0.25.0
2022 | cac: 6.7.14
2023 | chokidar: 4.0.3
2024 | consola: 3.4.0
2025 | debug: 4.4.0
2026 | esbuild: 0.25.0
2027 | joycon: 3.1.1
2028 | picocolors: 1.1.1
2029 | postcss-load-config: 6.0.1
2030 | resolve-from: 5.0.0
2031 | rollup: 4.34.9
2032 | source-map: 0.8.0-beta.0
2033 | sucrase: 3.35.0
2034 | tinyexec: 0.3.2
2035 | tinyglobby: 0.2.12
2036 | tree-kill: 1.2.2
2037 | typescript: 5.8.2
2038 | transitivePeerDependencies:
2039 | - jiti
2040 | - supports-color
2041 | - tsx
2042 | - yaml
2043 | dev: true
2044 |
2045 | /tunnel-agent/0.6.0:
2046 | resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
2047 | dependencies:
2048 | safe-buffer: 5.2.1
2049 | dev: false
2050 |
2051 | /typescript/5.8.2:
2052 | resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==}
2053 | engines: {node: '>=14.17'}
2054 | hasBin: true
2055 | dev: true
2056 |
2057 | /undici-types/6.20.0:
2058 | resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
2059 | dev: false
2060 |
2061 | /universalify/0.1.2:
2062 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
2063 | engines: {node: '>= 4.0.0'}
2064 | dev: true
2065 |
2066 | /util-deprecate/1.0.2:
2067 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
2068 | dev: false
2069 |
2070 | /webidl-conversions/4.0.2:
2071 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
2072 | dev: true
2073 |
2074 | /whatwg-url/7.1.0:
2075 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
2076 | dependencies:
2077 | lodash.sortby: 4.7.0
2078 | tr46: 1.0.1
2079 | webidl-conversions: 4.0.2
2080 | dev: true
2081 |
2082 | /which/2.0.2:
2083 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2084 | engines: {node: '>= 8'}
2085 | hasBin: true
2086 | dependencies:
2087 | isexe: 2.0.0
2088 | dev: true
2089 |
2090 | /wrap-ansi/7.0.0:
2091 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
2092 | engines: {node: '>=10'}
2093 | dependencies:
2094 | ansi-styles: 4.3.0
2095 | string-width: 4.2.3
2096 | strip-ansi: 6.0.1
2097 | dev: true
2098 |
2099 | /wrap-ansi/8.1.0:
2100 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
2101 | engines: {node: '>=12'}
2102 | dependencies:
2103 | ansi-styles: 6.2.1
2104 | string-width: 5.1.2
2105 | strip-ansi: 7.1.0
2106 | dev: true
2107 |
2108 | /wrappy/1.0.2:
2109 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2110 | dev: false
2111 |
--------------------------------------------------------------------------------
/src/interfaces.ts:
--------------------------------------------------------------------------------
1 | import { InferenceSession } from "onnxruntime-common";
2 |
3 | export type WebOrtLib =
4 | | typeof import("onnxruntime-web")
5 | | typeof import("onnxruntime-web/webgpu")
6 | | typeof import("onnxruntime-web/webgl");
7 |
8 | export type NodeOrtLib = typeof import("onnxruntime-node");
9 |
10 | export type ExecutionProvider = "cpu" | "wasm" | "webgpu" | "webgl";
11 |
12 | // export type ExecutionContext = "web" | "node";
13 |
14 | export interface IBaseSettings {
15 | modelPath: string | Uint8Array | ArrayBufferLike;
16 | // executionContext: ExecutionContext;
17 | }
18 |
19 | export interface IONNXNodeSettings extends IBaseSettings {}
20 |
21 | export interface IONNXWebSettings extends IBaseSettings {
22 | executionProvider?: ExecutionProvider;
23 | wasmPaths?: string;
24 | multiThread?: boolean;
25 | maxThreads?: number;
26 | fetchBinary?: boolean;
27 | }
28 |
29 | export type IONNXSettings = IONNXNodeSettings | IONNXWebSettings;
30 |
31 | export interface IONNXBaseWrapper {
32 | init(): Promise;
33 | run(
34 | feeds: InferenceSession.FeedsType,
35 | options?: InferenceSession.RunOptions,
36 | ): Promise;
37 | }
38 |
39 | export interface IONNXWebWrapper extends IONNXBaseWrapper {
40 | ort: WebOrtLib;
41 | settings: IONNXWebSettings;
42 | }
43 |
44 | export interface IONNXNodeWrapper extends IONNXBaseWrapper {
45 | ort: NodeOrtLib;
46 | settings: IONNXNodeSettings;
47 | }
48 |
49 | export type ONNXWrapper = IONNXWebWrapper | IONNXNodeWrapper;
50 |
51 | export interface ITransformersSettings {
52 | allowLocalModels: boolean;
53 | useBrowserCache: boolean;
54 | }
55 |
56 | export interface InitConfig {
57 | tokenizerPath: string;
58 | onnxSettings: IONNXSettings;
59 | transformersSettings?: ITransformersSettings;
60 | maxWidth?: number;
61 | modelType?: string;
62 | }
63 |
64 | export interface IInference {
65 | texts: string[];
66 | entities: string[];
67 | flatNer?: boolean;
68 | threshold?: number;
69 | multiLabel?: boolean;
70 | }
71 |
72 | export type RawInferenceResult = [string, number, number, string, number][][];
73 |
74 | export interface IEntityResult {
75 | spanText: string;
76 | start: number;
77 | end: number;
78 | label: string;
79 | score: number;
80 | }
81 | export type InferenceResultSingle = IEntityResult[];
82 | export type InferenceResultMultiple = InferenceResultSingle[];
83 |
--------------------------------------------------------------------------------
/src/lib/decoder.ts:
--------------------------------------------------------------------------------
1 | import { RawInferenceResult } from "./Gliner";
2 |
3 | type Spans = [string, number, number, string, number][];
4 |
5 | // Check if one span is nested inside the other
6 | const isNested = (idx1: number[], idx2: number[]): boolean => {
7 | return (idx1[0] <= idx2[0] && idx1[1] >= idx2[1]) || (idx2[0] <= idx1[0] && idx2[1] >= idx1[1]);
8 | };
9 |
10 | // Check for any overlap between two spans
11 | const hasOverlapping = (idx1: number[], idx2: number[], multiLabel: boolean = false): boolean => {
12 | if (idx1.slice(0, 2).toString() === idx2.slice(0, 2).toString()) {
13 | return !multiLabel;
14 | }
15 | if (idx1[0] > idx2[1] || idx2[0] > idx1[1]) {
16 | return false;
17 | }
18 | return true;
19 | };
20 |
21 | // Check if spans overlap but are not nested inside each other
22 | const hasOverlappingNested = (
23 | idx1: number[],
24 | idx2: number[],
25 | multiLabel: boolean = false,
26 | ): boolean => {
27 | if (idx1.slice(0, 2).toString() === idx2.slice(0, 2).toString()) {
28 | return !multiLabel;
29 | }
30 | if (idx1[0] > idx2[1] || idx2[0] > idx1[1] || isNested(idx1, idx2)) {
31 | return false;
32 | }
33 | return true;
34 | };
35 |
36 | const sigmoid = (x: number): number => {
37 | return 1 / (1 + Math.exp(-x));
38 | };
39 |
40 | // BaseDecoder class using abstract methods
41 | abstract class BaseDecoder {
42 | config: any;
43 |
44 | constructor(config: any) {
45 | if (new.target === BaseDecoder) {
46 | throw new TypeError("Cannot instantiate an abstract class.");
47 | }
48 | this.config = config;
49 | }
50 |
51 | abstract decode(...args: any[]): any;
52 |
53 | greedySearch(spans: Spans, flatNer: boolean = true, multiLabel: boolean = false): Spans {
54 | const hasOv = flatNer
55 | ? (idx1: number[], idx2: number[]) => hasOverlapping(idx1, idx2, multiLabel)
56 | : (idx1: number[], idx2: number[]) => hasOverlappingNested(idx1, idx2, multiLabel);
57 |
58 | const newList: Spans = [];
59 | // Sort spans by their score (last element) in descending order
60 | const spanProb: Spans = spans.slice().sort((a, b) => b[b.length - 1] - a[a.length - 1]);
61 |
62 | for (let i = 0; i < spanProb.length; i++) {
63 | const b = spanProb[i];
64 | let flag = false;
65 | for (const newSpan of newList) {
66 | // Compare only start and end indices
67 | if (hasOv(b.slice(1, 3), newSpan.slice(1, 3))) {
68 | flag = true;
69 | break;
70 | }
71 | }
72 | if (!flag) {
73 | newList.push(b);
74 | }
75 | }
76 |
77 | // Sort newList by start position (second element) for correct ordering
78 | return newList.sort((a, b) => a[1] - b[1]);
79 | }
80 | }
81 | // SpanDecoder subclass
82 | export class SpanDecoder extends BaseDecoder {
83 | decode(
84 | batchSize: number,
85 | inputLength: number,
86 | maxWidth: number,
87 | numEntities: number,
88 | texts: string[],
89 | batchIds: number[],
90 | batchWordsStartIdx: number[][],
91 | batchWordsEndIdx: number[][],
92 | idToClass: Record,
93 | modelOutput: number[],
94 | flatNer: boolean = false,
95 | threshold: number = 0.5,
96 | multiLabel: boolean = false,
97 | ): RawInferenceResult {
98 | const spans: RawInferenceResult = [];
99 |
100 | for (let batch = 0; batch < batchSize; batch++) {
101 | spans.push([]);
102 | }
103 |
104 | const batchPadding = inputLength * maxWidth * numEntities;
105 | const startTokenPadding = maxWidth * numEntities;
106 | const endTokenPadding = numEntities * 1;
107 |
108 | modelOutput.forEach((value, id) => {
109 | let batch = Math.floor(id / batchPadding);
110 | let startToken = Math.floor(id / startTokenPadding) % inputLength;
111 | let endToken = startToken + (Math.floor(id / endTokenPadding) % maxWidth);
112 | let entity = id % numEntities;
113 |
114 | let prob = sigmoid(value);
115 |
116 | if (
117 | prob >= threshold &&
118 | startToken < batchWordsStartIdx[batch].length &&
119 | endToken < batchWordsEndIdx[batch].length
120 | ) {
121 | let globalBatch: number = batchIds[batch];
122 | let startIdx: number = batchWordsStartIdx[batch][startToken];
123 | let endIdx: number = batchWordsEndIdx[batch][endToken];
124 | let spanText: string = texts[globalBatch].slice(startIdx, endIdx);
125 | spans[batch].push([spanText, startIdx, endIdx, idToClass[entity + 1], prob]);
126 | }
127 | });
128 | const allSelectedSpans: RawInferenceResult = [];
129 |
130 | spans.forEach((resI, id) => {
131 | const selectedSpans = this.greedySearch(resI, flatNer, multiLabel);
132 | allSelectedSpans.push(selectedSpans);
133 | });
134 |
135 | return allSelectedSpans;
136 | }
137 | }
138 |
139 | // TokenDecoder subclass
140 | export class TokenDecoder extends BaseDecoder {
141 | decode(
142 | batchSize: number,
143 | inputLength: number,
144 | numEntities: number,
145 | texts: string[],
146 | batchIds: number[],
147 | batchWordsStartIdx: number[][],
148 | batchWordsEndIdx: number[][],
149 | idToClass: Record,
150 | modelOutput: number[],
151 | flatNer: boolean = false,
152 | threshold: number = 0.5,
153 | multiLabel: boolean = false,
154 | ): RawInferenceResult {
155 | const positionPadding = batchSize * inputLength * numEntities;
156 | const batchPadding = inputLength * numEntities;
157 | const tokenPadding = numEntities;
158 |
159 | let selectedStarts: any = [];
160 | let selectedEnds: any = [];
161 | let insideScore: number[][][] = [];
162 |
163 | for (let id = 0; id < batchSize; id++) {
164 | selectedStarts.push([]);
165 | selectedEnds.push([]);
166 | let batches: number[][] = [];
167 | for (let j = 0; j < inputLength; j++) {
168 | let sequence: number[] = Array(numEntities).fill(0);
169 | batches.push(sequence);
170 | }
171 | insideScore.push(batches);
172 | }
173 |
174 | modelOutput.forEach((value, id) => {
175 | let position = Math.floor(id / positionPadding);
176 | let batch = Math.floor(id / batchPadding) % batchSize;
177 | let token = Math.floor(id / tokenPadding) % inputLength;
178 | let entity = id % numEntities;
179 |
180 | let prob = sigmoid(value);
181 |
182 | if (prob >= threshold && token < batchWordsEndIdx[batch].length) {
183 | if (position == 0) {
184 | selectedStarts[batch].push([token, entity]);
185 | } else if (position == 1) {
186 | selectedEnds[batch].push([token, entity]);
187 | }
188 | }
189 | if (position == 2) {
190 | insideScore[batch][token][entity] = prob;
191 | }
192 | });
193 |
194 | const spans: RawInferenceResult = [];
195 |
196 | for (let batch = 0; batch < batchSize; batch++) {
197 | let batchSpans: Spans = [];
198 |
199 | for (let [start, clsSt] of selectedStarts[batch]) {
200 | for (let [end, clsEd] of selectedEnds[batch]) {
201 | if (end >= start && clsSt === clsEd) {
202 | // Calculate the inside span scores
203 | const insideSpanScores = insideScore[batch]
204 | .slice(start, end + 1)
205 | .map((tokenScores) => tokenScores[clsSt]);
206 |
207 | // Check if all scores within the span are above the threshold
208 | if (insideSpanScores.some((score) => score < threshold)) continue;
209 |
210 | // Calculate mean span score
211 | const spanScore = insideSpanScores.reduce((a, b) => a + b, 0) / insideSpanScores.length;
212 |
213 | // Extract the start and end indices and the text for the span
214 | let startIdx = batchWordsStartIdx[batch][start];
215 | let endIdx = batchWordsEndIdx[batch][end];
216 | let spanText = texts[batchIds[batch]].slice(startIdx, endIdx);
217 |
218 | // Push the span with its score and class
219 | batchSpans.push([spanText, startIdx, endIdx, idToClass[clsSt + 1], spanScore]);
220 | }
221 | }
222 | }
223 | spans.push(batchSpans);
224 | }
225 |
226 | const allSelectedSpans: RawInferenceResult = [];
227 |
228 | spans.forEach((resI, id) => {
229 | const selectedSpans = this.greedySearch(resI, flatNer, multiLabel);
230 | allSelectedSpans.push(selectedSpans);
231 | });
232 |
233 | return allSelectedSpans;
234 | }
235 | }
236 |
--------------------------------------------------------------------------------
/src/lib/model.ts:
--------------------------------------------------------------------------------
1 | import ort from "onnxruntime-web";
2 | import { RawInferenceResult, ONNXWrapper } from "../interfaces";
3 |
4 | export class Model {
5 | constructor(
6 | public config: any,
7 | public processor: any,
8 | public decoder: any,
9 | public onnxWrapper: ONNXWrapper,
10 | ) {}
11 |
12 | async initialize(): Promise {
13 | await this.onnxWrapper.init();
14 | }
15 | }
16 |
17 | export class SpanModel extends Model {
18 | prepareInputs(batch: any): Record {
19 | const batch_size: number = batch.inputsIds.length;
20 | const num_tokens: number = batch.inputsIds[0].length;
21 | const num_spans: number = batch.spanIdxs[0].length;
22 |
23 | const createTensor = (data: any[], shape: number[], tensorType: any = "int64"): ort.Tensor => {
24 | // @ts-ignore // NOTE: node types not working
25 | return new this.onnxWrapper.ort.Tensor(tensorType, data.flat(Infinity), shape);
26 | };
27 |
28 | let input_ids: ort.Tensor = createTensor(batch.inputsIds, [batch_size, num_tokens]);
29 | let attention_mask: ort.Tensor = createTensor(batch.attentionMasks, [batch_size, num_tokens]); // NOTE: why convert to bool but type is not bool?
30 | let words_mask: ort.Tensor = createTensor(batch.wordsMasks, [batch_size, num_tokens]);
31 | let text_lengths: ort.Tensor = createTensor(batch.textLengths, [batch_size, 1]);
32 | let span_idx: ort.Tensor = createTensor(batch.spanIdxs, [batch_size, num_spans, 2]);
33 | let span_mask: ort.Tensor = createTensor(batch.spanMasks, [batch_size, num_spans], "bool");
34 |
35 | const feeds: Record = {
36 | input_ids: input_ids,
37 | attention_mask: attention_mask,
38 | words_mask: words_mask,
39 | text_lengths: text_lengths,
40 | span_idx: span_idx,
41 | span_mask: span_mask,
42 | };
43 |
44 | return feeds;
45 | }
46 |
47 | async inference(
48 | texts: string[],
49 | entities: string[],
50 | flatNer: boolean = false,
51 | threshold: number = 0.5,
52 | multiLabel: boolean = false,
53 | ): Promise {
54 | let batch: Record = this.processor.prepareBatch(texts, entities);
55 | let feeds: Record = this.prepareInputs(batch);
56 | const results: Record = await this.onnxWrapper.run(feeds);
57 | const modelOutput: any = results["logits"].data;
58 | // const modelOutput = results.logits.data as number[];
59 |
60 | const batchSize: number = batch.batchTokens.length;
61 | const inputLength: number = Math.max(...batch.textLengths);
62 | const maxWidth: number = this.config.max_width;
63 | const numEntities: number = entities.length;
64 | const batchIds: number[] = Array.from({ length: batchSize }, (_, i) => i);
65 | const decodedSpans: RawInferenceResult = this.decoder.decode(
66 | batchSize,
67 | inputLength,
68 | maxWidth,
69 | numEntities,
70 | texts,
71 | batchIds,
72 | batch.batchWordsStartIdx,
73 | batch.batchWordsEndIdx,
74 | batch.idToClass,
75 | modelOutput,
76 | flatNer,
77 | threshold,
78 | multiLabel,
79 | );
80 |
81 | return decodedSpans;
82 | }
83 |
84 | async inference_with_chunking(
85 | texts: string[],
86 | entities: string[],
87 | flatNer: boolean = false,
88 | threshold: number = 0.5,
89 | multiLabel: boolean = false,
90 | batch_size: number = 4,
91 | max_words: number = 512,
92 | ): Promise {
93 | const {
94 | idToClass,
95 | }: {
96 | idToClass: Record;
97 | } = this.processor.createMappings(entities);
98 | let batchIds: number[] = [];
99 | let batchTokens: string[][] = [];
100 | let batchWordsStartIdx: number[][] = [];
101 | let batchWordsEndIdx: number[][] = [];
102 | texts.forEach((text, id) => {
103 | let [tokens, wordsStartIdx, wordsEndIdx]: [string[], number[], number[]] =
104 | this.processor.tokenizeText(text);
105 | let num_sub_batches: number = Math.ceil(tokens.length / max_words);
106 |
107 | for (let i = 0; i < num_sub_batches; i++) {
108 | let start: number = i * max_words;
109 | let end: number = Math.min((i + 1) * max_words, tokens.length);
110 |
111 | batchIds.push(id);
112 | batchTokens.push(tokens.slice(start, end));
113 | batchWordsStartIdx.push(wordsStartIdx.slice(start, end));
114 | batchWordsEndIdx.push(wordsEndIdx.slice(start, end));
115 | }
116 | });
117 |
118 | let num_batches: number = Math.ceil(batchIds.length / batch_size);
119 |
120 | let finalDecodedSpans: RawInferenceResult = [];
121 | for (let id = 0; id < texts.length; id++) {
122 | finalDecodedSpans.push([]);
123 | }
124 |
125 | for (let batch_id = 0; batch_id < num_batches; batch_id++) {
126 | let start: number = batch_id * batch_size;
127 | let end: number = Math.min((batch_id + 1) * batch_size, batchIds.length);
128 |
129 | let currBatchTokens: string[][] = batchTokens.slice(start, end);
130 | let currBatchWordsStartIdx: number[][] = batchWordsStartIdx.slice(start, end);
131 | let currBatchWordsEndIdx: number[][] = batchWordsEndIdx.slice(start, end);
132 | let currBatchIds: number[] = batchIds.slice(start, end);
133 |
134 | let [inputTokens, textLengths, promptLengths]: [string[][], number[], number[]] =
135 | this.processor.prepareTextInputs(currBatchTokens, entities);
136 |
137 | let [inputsIds, attentionMasks, wordsMasks]: [number[][], number[][], number[][]] =
138 | this.processor.encodeInputs(inputTokens, promptLengths);
139 |
140 | inputsIds = this.processor.padArray(inputsIds);
141 | attentionMasks = this.processor.padArray(attentionMasks);
142 | wordsMasks = this.processor.padArray(wordsMasks);
143 |
144 | let { spanIdxs, spanMasks }: { spanIdxs: number[][][]; spanMasks: boolean[][] } =
145 | this.processor.prepareSpans(currBatchTokens, this.config["max_width"]);
146 |
147 | spanIdxs = this.processor.padArray(spanIdxs, 3);
148 | spanMasks = this.processor.padArray(spanMasks);
149 |
150 | let batch: Record = {
151 | inputsIds: inputsIds,
152 | attentionMasks: attentionMasks,
153 | wordsMasks: wordsMasks,
154 | textLengths: textLengths,
155 | spanIdxs: spanIdxs,
156 | spanMasks: spanMasks,
157 | idToClass: idToClass,
158 | batchTokens: currBatchTokens,
159 | batchWordsStartIdx: currBatchWordsStartIdx,
160 | batchWordsEndIdx: currBatchWordsEndIdx,
161 | };
162 |
163 | let feeds: Record = this.prepareInputs(batch);
164 | const results: Record = await this.onnxWrapper.run(feeds);
165 | const modelOutput = results["logits"].data;
166 | // const modelOutput = results.logits.data as number[];
167 |
168 | const batchSize: number = batch.batchTokens.length;
169 | const inputLength: number = Math.max(...batch.textLengths);
170 | const maxWidth: number = this.config.max_width;
171 | const numEntities: number = entities.length;
172 |
173 | const decodedSpans: RawInferenceResult = this.decoder.decode(
174 | batchSize,
175 | inputLength,
176 | maxWidth,
177 | numEntities,
178 | texts,
179 | currBatchIds,
180 | batch.batchWordsStartIdx,
181 | batch.batchWordsEndIdx,
182 | batch.idToClass,
183 | modelOutput,
184 | flatNer,
185 | threshold,
186 | multiLabel,
187 | );
188 |
189 | for (let i = 0; i < currBatchIds.length; i++) {
190 | const originalTextId = currBatchIds[i];
191 | finalDecodedSpans[originalTextId].push(...decodedSpans[i]);
192 | }
193 | }
194 |
195 | return finalDecodedSpans;
196 | }
197 | }
198 |
199 | export class TokenModel extends Model {
200 | prepareInputs(batch: any): Record {
201 | const batch_size: number = batch.inputsIds.length;
202 | const num_tokens: number = batch.inputsIds[0].length;
203 |
204 | const createTensor = (data: any[], shape: number[], tensorType: any = "int64"): ort.Tensor => {
205 | // @ts-ignore // NOTE: node types not working
206 | return new this.onnxWrapper.ort.Tensor(tensorType, data.flat(Infinity), shape);
207 | };
208 |
209 | let input_ids: ort.Tensor = createTensor(batch.inputsIds, [batch_size, num_tokens]);
210 | let attention_mask: ort.Tensor = createTensor(batch.attentionMasks, [batch_size, num_tokens]); // NOTE: why convert to bool but type is not bool?
211 | let words_mask: ort.Tensor = createTensor(batch.wordsMasks, [batch_size, num_tokens]);
212 | let text_lengths: ort.Tensor = createTensor(batch.textLengths, [batch_size, 1]);
213 |
214 | const feeds: Record = {
215 | input_ids: input_ids,
216 | attention_mask: attention_mask,
217 | words_mask: words_mask,
218 | text_lengths: text_lengths,
219 | };
220 |
221 | return feeds;
222 | }
223 |
224 | async inference(
225 | texts: string[],
226 | entities: string[],
227 | flatNer: boolean = false,
228 | threshold: number = 0.5,
229 | multiLabel: boolean = false,
230 | ): Promise {
231 | let batch: Record = this.processor.prepareBatch(texts, entities);
232 | let feeds: Record = this.prepareInputs(batch);
233 | const results: Record = await this.onnxWrapper.run(feeds);
234 | const modelOutput: any = results["logits"].data;
235 | // const modelOutput = results.logits.data as number[];
236 |
237 | const batchSize: number = batch.batchTokens.length;
238 | const inputLength: number = Math.max(...batch.textLengths);
239 | const numEntities: number = entities.length;
240 | const batchIds: number[] = Array.from({ length: batchSize }, (_, i) => i);
241 | const decodedSpans: RawInferenceResult = this.decoder.decode(
242 | batchSize,
243 | inputLength,
244 | numEntities,
245 | texts,
246 | batchIds,
247 | batch.batchWordsStartIdx,
248 | batch.batchWordsEndIdx,
249 | batch.idToClass,
250 | modelOutput,
251 | flatNer,
252 | threshold,
253 | multiLabel,
254 | );
255 |
256 | return decodedSpans;
257 | }
258 | async inference_with_chunking(
259 | texts: string[],
260 | entities: string[],
261 | flatNer: boolean = true,
262 | threshold: number = 0.5,
263 | multiLabel: boolean = false,
264 | batch_size: number = 4,
265 | max_words: number = 512,
266 | ): Promise {
267 | const {
268 | idToClass,
269 | }: {
270 | idToClass: Record;
271 | } = this.processor.createMappings(entities);
272 | let batchIds: number[] = [];
273 | let batchTokens: string[][] = [];
274 | let batchWordsStartIdx: number[][] = [];
275 | let batchWordsEndIdx: number[][] = [];
276 | texts.forEach((text, id) => {
277 | let [tokens, wordsStartIdx, wordsEndIdx]: [string[], number[], number[]] =
278 | this.processor.tokenizeText(text);
279 | let num_sub_batches: number = Math.ceil(tokens.length / max_words);
280 |
281 | for (let i = 0; i < num_sub_batches; i++) {
282 | let start: number = i * max_words;
283 | let end: number = Math.min((i + 1) * max_words, tokens.length);
284 |
285 | batchIds.push(id);
286 | batchTokens.push(tokens.slice(start, end));
287 | batchWordsStartIdx.push(wordsStartIdx.slice(start, end));
288 | batchWordsEndIdx.push(wordsEndIdx.slice(start, end));
289 | }
290 | });
291 |
292 | let num_batches: number = Math.ceil(batchIds.length / batch_size);
293 |
294 | let finalDecodedSpans: RawInferenceResult = [];
295 | for (let id = 0; id < texts.length; id++) {
296 | finalDecodedSpans.push([]);
297 | }
298 |
299 | for (let batch_id = 0; batch_id < num_batches; batch_id++) {
300 | let start: number = batch_id * batch_size;
301 | let end: number = Math.min((batch_id + 1) * batch_size, batchIds.length);
302 |
303 | let currBatchTokens: string[][] = batchTokens.slice(start, end);
304 | let currBatchWordsStartIdx: number[][] = batchWordsStartIdx.slice(start, end);
305 | let currBatchWordsEndIdx: number[][] = batchWordsEndIdx.slice(start, end);
306 | let currBatchIds: number[] = batchIds.slice(start, end);
307 |
308 | let [inputTokens, textLengths, promptLengths]: [string[][], number[], number[]] =
309 | this.processor.prepareTextInputs(currBatchTokens, entities);
310 |
311 | let [inputsIds, attentionMasks, wordsMasks]: [number[][], number[][], number[][]] =
312 | this.processor.encodeInputs(inputTokens, promptLengths);
313 |
314 | inputsIds = this.processor.padArray(inputsIds);
315 | attentionMasks = this.processor.padArray(attentionMasks);
316 | wordsMasks = this.processor.padArray(wordsMasks);
317 |
318 | let batch: Record = {
319 | inputsIds: inputsIds,
320 | attentionMasks: attentionMasks,
321 | wordsMasks: wordsMasks,
322 | textLengths: textLengths,
323 | idToClass: idToClass,
324 | batchTokens: currBatchTokens,
325 | batchWordsStartIdx: currBatchWordsStartIdx,
326 | batchWordsEndIdx: currBatchWordsEndIdx,
327 | };
328 |
329 | let feeds: Record = this.prepareInputs(batch);
330 | const results: Record = await this.onnxWrapper.run(feeds);
331 | const modelOutput = results["logits"].data;
332 | // const modelOutput = results.logits.data as number[];
333 |
334 | const batchSize: number = batch.batchTokens.length;
335 | const inputLength: number = Math.max(...batch.textLengths);
336 | const numEntities: number = entities.length;
337 |
338 | const decodedSpans: RawInferenceResult = this.decoder.decode(
339 | batchSize,
340 | inputLength,
341 | numEntities,
342 | texts,
343 | currBatchIds,
344 | batch.batchWordsStartIdx,
345 | batch.batchWordsEndIdx,
346 | batch.idToClass,
347 | modelOutput,
348 | flatNer,
349 | threshold,
350 | multiLabel,
351 | );
352 |
353 | for (let i = 0; i < currBatchIds.length; i++) {
354 | const originalTextId = currBatchIds[i];
355 | finalDecodedSpans[originalTextId].push(...decodedSpans[i]);
356 | }
357 | }
358 |
359 | return finalDecodedSpans;
360 | }
361 | }
362 |
--------------------------------------------------------------------------------
/src/lib/processor.ts:
--------------------------------------------------------------------------------
1 | export class WhitespaceTokenSplitter {
2 | private whitespacePattern: RegExp;
3 |
4 | constructor() {
5 | this.whitespacePattern = /\w+(?:[-_]\w+)*|\S/g;
6 | }
7 |
8 | *call(text: string): Generator<[string, number, number]> {
9 | let match: RegExpExecArray | null;
10 | while ((match = this.whitespacePattern.exec(text)) !== null) {
11 | yield [match[0], match.index, this.whitespacePattern.lastIndex];
12 | }
13 | }
14 | }
15 |
16 | export class Processor {
17 | config: any;
18 | tokenizer: any;
19 | wordsSplitter: WhitespaceTokenSplitter;
20 |
21 | constructor(config: any, tokenizer: any, wordsSplitter: WhitespaceTokenSplitter) {
22 | this.config = config;
23 | this.tokenizer = tokenizer;
24 | this.wordsSplitter = wordsSplitter;
25 | }
26 |
27 | tokenizeText(text: string): [string[], number[], number[]] {
28 | let tokens: string[] = [];
29 | let wordsStartIdx: number[] = [];
30 | let wordsEndIdx: number[] = [];
31 |
32 | for (const [token, start, end] of this.wordsSplitter.call(text)) {
33 | tokens.push(token);
34 | wordsStartIdx.push(start);
35 | wordsEndIdx.push(end);
36 | }
37 | return [tokens, wordsStartIdx, wordsEndIdx];
38 | }
39 |
40 | batchTokenizeText(texts: string[]): [string[][], number[][], number[][]] {
41 | let batchTokens: string[][] = [];
42 | let batchWordsStartIdx: number[][] = [];
43 | let batchWordsEndIdx: number[][] = [];
44 |
45 | for (const text of texts) {
46 | const [tokens, wordsStartIdx, wordsEndIdx] = this.tokenizeText(text);
47 | batchTokens.push(tokens);
48 | batchWordsStartIdx.push(wordsStartIdx);
49 | batchWordsEndIdx.push(wordsEndIdx);
50 | }
51 |
52 | return [batchTokens, batchWordsStartIdx, batchWordsEndIdx];
53 | }
54 |
55 | createMappings(classes: string[]): {
56 | classToId: Record;
57 | idToClass: Record;
58 | } {
59 | const classToId: Record = {};
60 | const idToClass: Record = {};
61 |
62 | classes.forEach((className, index) => {
63 | const id = index + 1; // Start numbering from 1
64 | classToId[className] = id;
65 | idToClass[id] = className;
66 | });
67 |
68 | return { classToId, idToClass };
69 | }
70 |
71 | prepareTextInputs(tokens: string[][], entities: string[]): [string[][], number[], number[]] {
72 | const inputTexts: string[][] = [];
73 | const promptLengths: number[] = [];
74 | const textLengths: number[] = [];
75 |
76 | tokens.forEach((text) => {
77 | textLengths.push(text.length);
78 |
79 | let inputText: string[] = [];
80 | for (let ent of entities) {
81 | inputText.push("<>");
82 | inputText.push(ent);
83 | }
84 | inputText.push("<>");
85 | const promptLength = inputText.length;
86 | promptLengths.push(promptLength);
87 | inputText = inputText.concat(text);
88 | inputTexts.push(inputText);
89 | });
90 | return [inputTexts, textLengths, promptLengths];
91 | }
92 |
93 | encodeInputs(
94 | texts: string[][],
95 | promptLengths: number[] | null = null,
96 | ): [number[][], number[][], number[][]] {
97 | let wordsMasks: number[][] = [];
98 | let inputsIds: number[][] = [];
99 | let attentionMasks: number[][] = [];
100 |
101 | for (let id = 0; id < texts.length; id++) {
102 | let promptLength = promptLengths ? promptLengths[id] : 0;
103 | let tokenizedInputs = texts[id];
104 | let wordsMask: number[] = [0];
105 | let inputIds: number[] = [1];
106 | let attentionMask: number[] = [1];
107 |
108 | let c = 1;
109 | tokenizedInputs.forEach((word, wordId) => {
110 | let wordTokens = this.tokenizer.encode(word).slice(1, -1);
111 | wordTokens.forEach((token: number, tokenId: number) => {
112 | attentionMask.push(1);
113 | if (wordId < promptLength) {
114 | wordsMask.push(0);
115 | } else if (tokenId === 0) {
116 | wordsMask.push(c);
117 | c++;
118 | } else {
119 | wordsMask.push(0);
120 | }
121 | inputIds.push(token);
122 | });
123 | });
124 | wordsMask.push(0);
125 | inputIds.push(this.tokenizer.sep_token_id);
126 | attentionMask.push(1);
127 |
128 | wordsMasks.push(wordsMask);
129 | inputsIds.push(inputIds);
130 | attentionMasks.push(attentionMask);
131 | }
132 | return [inputsIds, attentionMasks, wordsMasks];
133 | }
134 |
135 | padArray(arr: any[], dimensions: number = 2): any[][] {
136 | if (dimensions < 2 || dimensions > 3) {
137 | throw new Error("Only 2D and 3D arrays are supported");
138 | }
139 |
140 | const maxLength: number = Math.max(...arr.map((subArr: any[]) => subArr.length));
141 | const finalDim: number = dimensions === 3 ? arr[0][0].length : 0;
142 |
143 | return arr.map((subArr: any[]) => {
144 | const padCount = maxLength - subArr.length;
145 | const padding = Array(padCount).fill(dimensions === 3 ? Array(finalDim).fill(0) : 0);
146 | return [...subArr, ...padding];
147 | });
148 | }
149 | }
150 |
151 | export class SpanProcessor extends Processor {
152 | constructor(config: any, tokenizer: any, wordsSplitter: WhitespaceTokenSplitter) {
153 | super(config, tokenizer, wordsSplitter);
154 | }
155 |
156 | prepareSpans(
157 | batchTokens: string[][],
158 | maxWidth: number = 12,
159 | ): { spanIdxs: number[][][]; spanMasks: boolean[][] } {
160 | let spanIdxs: number[][][] = [];
161 | let spanMasks: boolean[][] = [];
162 |
163 | batchTokens.forEach((tokens) => {
164 | let textLength: number = tokens.length;
165 | let spanIdx: number[][] = [];
166 | let spanMask: boolean[] = [];
167 |
168 | for (let i = 0; i < textLength; i++) {
169 | for (let j = 0; j < maxWidth; j++) {
170 | let endIdx = Math.min(i + j, textLength - 1);
171 | spanIdx.push([i, endIdx]);
172 | spanMask.push(endIdx < textLength ? true : false);
173 | }
174 | }
175 |
176 | spanIdxs.push(spanIdx);
177 | spanMasks.push(spanMask);
178 | });
179 |
180 | return { spanIdxs, spanMasks };
181 | }
182 |
183 | prepareBatch(texts: string[], entities: string[]): Record {
184 | const [batchTokens, batchWordsStartIdx, batchWordsEndIdx]: [
185 | string[][],
186 | number[][],
187 | number[][],
188 | ] = this.batchTokenizeText(texts);
189 | const { idToClass }: { idToClass: Record } = this.createMappings(entities);
190 | const [inputTokens, textLengths, promptLengths]: [string[][], number[], number[]] =
191 | this.prepareTextInputs(batchTokens, entities);
192 |
193 | let [inputsIds, attentionMasks, wordsMasks]: [number[][], number[][], number[][]] =
194 | this.encodeInputs(inputTokens, promptLengths);
195 |
196 | inputsIds = this.padArray(inputsIds);
197 | attentionMasks = this.padArray(attentionMasks);
198 | wordsMasks = this.padArray(wordsMasks);
199 |
200 | let { spanIdxs, spanMasks }: { spanIdxs: number[][][]; spanMasks: boolean[][] } =
201 | this.prepareSpans(batchTokens, this.config["max_width"]);
202 |
203 | spanIdxs = this.padArray(spanIdxs, 3);
204 | spanMasks = this.padArray(spanMasks);
205 |
206 | return {
207 | inputsIds: inputsIds,
208 | attentionMasks: attentionMasks,
209 | wordsMasks: wordsMasks,
210 | textLengths: textLengths,
211 | spanIdxs: spanIdxs,
212 | spanMasks: spanMasks,
213 | idToClass: idToClass,
214 | batchTokens: batchTokens,
215 | batchWordsStartIdx: batchWordsStartIdx,
216 | batchWordsEndIdx: batchWordsEndIdx,
217 | };
218 | }
219 | }
220 |
221 | export class TokenProcessor extends Processor {
222 | constructor(config: any, tokenizer: any, wordsSplitter: WhitespaceTokenSplitter) {
223 | super(config, tokenizer, wordsSplitter);
224 | }
225 |
226 | prepareBatch(texts: string[], entities: string[]): Record {
227 | const [batchTokens, batchWordsStartIdx, batchWordsEndIdx]: [
228 | string[][],
229 | number[][],
230 | number[][],
231 | ] = this.batchTokenizeText(texts);
232 | const { idToClass }: { idToClass: Record } = this.createMappings(entities);
233 | const [inputTokens, textLengths, promptLengths]: [string[][], number[], number[]] =
234 | this.prepareTextInputs(batchTokens, entities);
235 |
236 | let [inputsIds, attentionMasks, wordsMasks]: [number[][], number[][], number[][]] =
237 | this.encodeInputs(inputTokens, promptLengths);
238 |
239 | inputsIds = this.padArray(inputsIds);
240 | attentionMasks = this.padArray(attentionMasks);
241 | wordsMasks = this.padArray(wordsMasks);
242 |
243 | return {
244 | inputsIds: inputsIds,
245 | attentionMasks: attentionMasks,
246 | wordsMasks: wordsMasks,
247 | textLengths: textLengths,
248 | idToClass: idToClass,
249 | batchTokens: batchTokens,
250 | batchWordsStartIdx: batchWordsStartIdx,
251 | batchWordsEndIdx: batchWordsEndIdx,
252 | };
253 | }
254 | }
255 |
--------------------------------------------------------------------------------
/src/node/Gliner.ts:
--------------------------------------------------------------------------------
1 | import { AutoTokenizer, env } from "@xenova/transformers";
2 | import { SpanModel, TokenModel } from "../lib/model";
3 | import { WhitespaceTokenSplitter, SpanProcessor, TokenProcessor } from "../lib/processor";
4 | import { SpanDecoder, TokenDecoder } from "../lib/decoder";
5 | import { ONNXNodeWrapper } from "./ONNXNodeWrapper";
6 | import {
7 | IEntityResult,
8 | IInference,
9 | InferenceResultMultiple,
10 | InitConfig,
11 | RawInferenceResult,
12 | } from "../interfaces";
13 |
14 | export class Gliner {
15 | private model: SpanModel | TokenModel | null = null;
16 |
17 | constructor(private config: InitConfig) {
18 | env.allowLocalModels = config.transformersSettings?.allowLocalModels ?? false;
19 | env.useBrowserCache = config.transformersSettings?.useBrowserCache ?? false;
20 |
21 | this.config = {
22 | ...config,
23 | maxWidth: config.maxWidth || 12,
24 | modelType: config.modelType || "span-level",
25 | };
26 | }
27 |
28 | async initialize(): Promise {
29 | const { tokenizerPath, onnxSettings, maxWidth } = this.config;
30 |
31 | const tokenizer = await AutoTokenizer.from_pretrained(tokenizerPath);
32 | // console.log("Tokenizer loaded.");
33 |
34 | const wordSplitter = new WhitespaceTokenSplitter();
35 |
36 | const onnxWrapper = new ONNXNodeWrapper(onnxSettings);
37 |
38 | if (this.config.modelType == "span-level") {
39 | // console.log("Initializing Span-level Model...");
40 | const processor = new SpanProcessor({ max_width: maxWidth }, tokenizer, wordSplitter);
41 | const decoder = new SpanDecoder({ max_width: maxWidth });
42 |
43 | this.model = new SpanModel({ max_width: maxWidth }, processor, decoder, onnxWrapper);
44 | } else {
45 | // console.log("Initializing Token-level Model...");
46 |
47 | const processor = new TokenProcessor({ max_width: maxWidth }, tokenizer, wordSplitter);
48 | const decoder = new TokenDecoder({ max_width: maxWidth });
49 |
50 | this.model = new TokenModel({ max_width: maxWidth }, processor, decoder, onnxWrapper);
51 | }
52 | await this.model.initialize();
53 | }
54 |
55 | async inference({
56 | texts,
57 | entities,
58 | flatNer = true,
59 | threshold = 0.5,
60 | multiLabel = false,
61 | }: IInference): Promise {
62 | if (!this.model) {
63 | throw new Error("Model is not initialized. Call initialize() first.");
64 | }
65 |
66 | const result = await this.model.inference(texts, entities, flatNer, threshold, multiLabel);
67 | return this.mapRawResultToResponse(result);
68 | }
69 |
70 | async inference_with_chunking({
71 | texts,
72 | entities,
73 | flatNer = false,
74 | threshold = 0.5,
75 | }: IInference): Promise {
76 | if (!this.model) {
77 | throw new Error("Model is not initialized. Call initialize() first.");
78 | }
79 |
80 | const result = await this.model.inference_with_chunking(texts, entities, flatNer, threshold);
81 | return this.mapRawResultToResponse(result);
82 | }
83 |
84 | mapRawResultToResponse(rawResult: RawInferenceResult): InferenceResultMultiple {
85 | const response: InferenceResultMultiple = [];
86 | for (const individualResult of rawResult) {
87 | const entityResult: IEntityResult[] = individualResult.map(
88 | ([spanText, start, end, label, score]) => ({
89 | spanText,
90 | start,
91 | end,
92 | label,
93 | score,
94 | }),
95 | );
96 | response.push(entityResult);
97 | }
98 |
99 | return response;
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/src/node/ONNXNodeWrapper.ts:
--------------------------------------------------------------------------------
1 | import * as ort from "onnxruntime-node";
2 | import { IONNXNodeSettings, IONNXNodeWrapper } from "../interfaces";
3 |
4 | export class ONNXNodeWrapper implements IONNXNodeWrapper {
5 | public ort: typeof ort = ort;
6 | private session: ort.InferenceSession | null = null;
7 |
8 | constructor(public settings: IONNXNodeSettings) {}
9 |
10 | public async init() {
11 | // @ts-ignore
12 | this.session = await this.ort.InferenceSession.create(this.settings.modelPath);
13 | }
14 |
15 | public async run(
16 | feeds: ort.InferenceSession.FeedsType,
17 | options: ort.InferenceSession.RunOptions = {},
18 | ): Promise {
19 | if (!this.session) {
20 | throw new Error("ONNXWrapper: Session not initialized. Please call init() first.");
21 | }
22 |
23 | return await this.session.run(feeds, options);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/node/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./Gliner";
2 | export { WhitespaceTokenSplitter } from "../lib/processor";
3 | // Export types from interfaces
4 | export type {
5 | IEntityResult,
6 | InferenceResultSingle,
7 | InferenceResultMultiple,
8 | IInference,
9 | InitConfig,
10 | RawInferenceResult,
11 | IONNXNodeSettings,
12 | ExecutionProvider,
13 | ITransformersSettings,
14 | } from "../interfaces";
15 |
--------------------------------------------------------------------------------
/src/types.d.ts:
--------------------------------------------------------------------------------
1 | declare module "onnxruntime-node" {
2 | export * from "onnxruntime-common";
3 | }
4 |
--------------------------------------------------------------------------------
/src/web/Gliner.ts:
--------------------------------------------------------------------------------
1 | import { AutoTokenizer, env } from "@xenova/transformers";
2 | import { SpanModel, TokenModel } from "../lib/model";
3 | import { WhitespaceTokenSplitter, SpanProcessor, TokenProcessor } from "../lib/processor";
4 | import { SpanDecoder, TokenDecoder } from "../lib/decoder";
5 | import {
6 | IEntityResult,
7 | IInference,
8 | InferenceResultMultiple,
9 | InitConfig,
10 | RawInferenceResult,
11 | } from "../interfaces";
12 | import { ONNXWebWrapper } from "./ONNXWebWrapper";
13 |
14 | export class Gliner {
15 | private model: SpanModel | TokenModel | null = null;
16 |
17 | constructor(private config: InitConfig) {
18 | env.allowLocalModels = config.transformersSettings?.allowLocalModels ?? false;
19 | env.useBrowserCache = config.transformersSettings?.useBrowserCache ?? false;
20 |
21 | this.config = {
22 | ...config,
23 | maxWidth: config.maxWidth || 12,
24 | modelType: config.modelType || "span-level",
25 | };
26 | }
27 |
28 | async initialize(): Promise {
29 | const { tokenizerPath, onnxSettings, maxWidth } = this.config;
30 |
31 | const tokenizer = await AutoTokenizer.from_pretrained(tokenizerPath);
32 | // console.log("Tokenizer loaded.");
33 |
34 | const wordSplitter = new WhitespaceTokenSplitter();
35 |
36 | const onnxWrapper = new ONNXWebWrapper(onnxSettings);
37 |
38 | if (this.config.modelType == "span-level") {
39 | // console.log("Initializing Span-level Model...");
40 | const processor = new SpanProcessor({ max_width: maxWidth }, tokenizer, wordSplitter);
41 | const decoder = new SpanDecoder({ max_width: maxWidth });
42 |
43 | this.model = new SpanModel({ max_width: maxWidth }, processor, decoder, onnxWrapper);
44 | } else {
45 | // console.log("Initializing Token-level Model...");
46 |
47 | const processor = new TokenProcessor({ max_width: maxWidth }, tokenizer, wordSplitter);
48 | const decoder = new TokenDecoder({ max_width: maxWidth });
49 |
50 | this.model = new TokenModel({ max_width: maxWidth }, processor, decoder, onnxWrapper);
51 | }
52 | await this.model.initialize();
53 | }
54 |
55 | async inference({
56 | texts,
57 | entities,
58 | flatNer = true,
59 | threshold = 0.5,
60 | multiLabel = false,
61 | }: IInference): Promise {
62 | if (!this.model) {
63 | throw new Error("Model is not initialized. Call initialize() first.");
64 | }
65 |
66 | const result = await this.model.inference(texts, entities, flatNer, threshold, multiLabel);
67 | return this.mapRawResultToResponse(result);
68 | }
69 |
70 | async inference_with_chunking({
71 | texts,
72 | entities,
73 | flatNer = false,
74 | threshold = 0.5,
75 | }: IInference): Promise {
76 | if (!this.model) {
77 | throw new Error("Model is not initialized. Call initialize() first.");
78 | }
79 |
80 | const result = await this.model.inference_with_chunking(texts, entities, flatNer, threshold);
81 | return this.mapRawResultToResponse(result);
82 | }
83 |
84 | mapRawResultToResponse(rawResult: RawInferenceResult): InferenceResultMultiple {
85 | const response: InferenceResultMultiple = [];
86 | for (const individualResult of rawResult) {
87 | const entityResult: IEntityResult[] = individualResult.map(
88 | ([spanText, start, end, label, score]) => ({
89 | spanText,
90 | start,
91 | end,
92 | label,
93 | score,
94 | }),
95 | );
96 | response.push(entityResult);
97 | }
98 |
99 | return response;
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/src/web/ONNXWebWrapper.ts:
--------------------------------------------------------------------------------
1 | import ort_CPU, { InferenceSession } from "onnxruntime-web";
2 | import ort_WEBGPU from "onnxruntime-web/webgpu";
3 | import ort_WEBGL from "onnxruntime-web/webgl";
4 | import { IONNXWebSettings, IONNXWebWrapper, WebOrtLib } from "../interfaces";
5 |
6 | // NOTE: Version needs to match installed package!
7 | const ONNX_WASM_CDN_URL = "https://cdn.jsdelivr.net/npm/onnxruntime-web@1.19.2/dist/";
8 | const DEFAULT_WASM_PATHS = ONNX_WASM_CDN_URL;
9 |
10 | export class ONNXWebWrapper implements IONNXWebWrapper {
11 | public ort: WebOrtLib = ort_CPU;
12 | private session:
13 | | ort_CPU.InferenceSession
14 | | ort_WEBGPU.InferenceSession
15 | | ort_WEBGL.InferenceSession
16 | | null = null;
17 |
18 | constructor(public settings: IONNXWebSettings) {
19 | const { executionProvider, wasmPaths = DEFAULT_WASM_PATHS } = settings;
20 | if (!executionProvider) {
21 | this.settings.executionProvider = "webgpu";
22 | }
23 | switch (this.settings.executionProvider) {
24 | case "cpu":
25 | case "wasm":
26 | break;
27 | case "webgpu":
28 | this.ort = ort_WEBGPU;
29 | break;
30 | case "webgl":
31 | this.ort = ort_WEBGL;
32 | break;
33 | default:
34 | throw new Error(`ONNXWrapper: Invalid execution provider: '${executionProvider}'`);
35 | }
36 | this.ort.env.wasm.wasmPaths = wasmPaths;
37 | }
38 |
39 | public async init() {
40 | if (!this.session) {
41 | const { modelPath, executionProvider, fetchBinary, multiThread } = this.settings;
42 | if (executionProvider === "cpu" || executionProvider === "wasm") {
43 | if (fetchBinary) {
44 | const binaryURL = this.ort.env.wasm.wasmPaths + "ort-wasm-simd-threaded.wasm";
45 | const response = await fetch(binaryURL);
46 | const binary = await response.arrayBuffer();
47 | this.ort.env.wasm.wasmBinary = binary;
48 | }
49 |
50 | if (multiThread) {
51 | const maxPossibleThreads = navigator.hardwareConcurrency ?? 0;
52 | const maxThreads = Math.min(
53 | this.settings.maxThreads ?? maxPossibleThreads,
54 | maxPossibleThreads,
55 | );
56 | this.ort.env.wasm.numThreads = maxThreads;
57 | }
58 | }
59 |
60 | // @ts-ignore
61 | this.session = await this.ort.InferenceSession.create(modelPath, {
62 | executionProviders: [executionProvider],
63 | });
64 | }
65 | }
66 |
67 | public async run(
68 | feeds: InferenceSession.FeedsType,
69 | options: InferenceSession.RunOptions = {},
70 | ): Promise {
71 | if (!this.session) {
72 | throw new Error("ONNXWrapper: Session not initialized. Please call init() first.");
73 | }
74 |
75 | return await this.session.run(feeds, options);
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/src/web/index.ts:
--------------------------------------------------------------------------------
1 | export * from "./Gliner";
2 | export { WhitespaceTokenSplitter } from "../lib/processor";
3 | // Export types from interfaces
4 | export type {
5 | IEntityResult,
6 | InferenceResultSingle,
7 | InferenceResultMultiple,
8 | IInference,
9 | InitConfig,
10 | RawInferenceResult,
11 | IONNXWebSettings,
12 | ExecutionProvider,
13 | ITransformersSettings,
14 | } from "../interfaces";
15 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2020",
4 | "useDefineForClassFields": true,
5 | "module": "ESNext",
6 | "lib": ["ES2020", "DOM", "DOM.Iterable"],
7 | "skipLibCheck": true,
8 |
9 | /* Bundler mode */
10 | "moduleResolution": "bundler",
11 | "allowImportingTsExtensions": true,
12 | "isolatedModules": true,
13 | "moduleDetection": "force",
14 | "noEmit": true,
15 |
16 | /* Linting */
17 | "strict": true,
18 | "noUnusedLocals": true,
19 | "noUnusedParameters": true,
20 | "noFallthroughCasesInSwitch": true
21 | },
22 | "include": ["src", "example/web/src/main.ts", "src/**/*.ts", "src/**/*.d.ts", "src/types.d.ts"]
23 | }
24 |
--------------------------------------------------------------------------------
/tsup.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "tsup";
2 |
3 | export default defineConfig([
4 | // Web Build
5 | {
6 | entry: ["src/web/index.ts"], // Entry for the web build
7 | format: ["cjs", "esm"], // Output formats
8 | dts: true, // Generate TypeScript declarations
9 | outDir: "dist", // Output directory for web
10 | treeshake: true,
11 | esbuildOptions(options, context) {
12 | if (context.format === "esm") {
13 | options.outExtension = { ".js": ".mjs" };
14 | } else if (context.format === "cjs") {
15 | options.outExtension = { ".js": ".cjs" };
16 | }
17 | },
18 | },
19 | // Node Build
20 | {
21 | entry: ["src/node/index.ts"], // Entry for the Node.js build
22 | format: ["cjs", "esm"], // Output formats
23 | dts: true, // Generate TypeScript declarations
24 | outDir: "dist/node", // Output directory for Node.js
25 | external: ["onnxruntime-web"], // Exclude web-specific runtime
26 | treeshake: true,
27 | esbuildOptions(options, context) {
28 | if (context.format === "esm") {
29 | options.outExtension = { ".js": ".mjs" };
30 | } else if (context.format === "cjs") {
31 | options.outExtension = { ".js": ".cjs" };
32 | }
33 | },
34 | },
35 | ]);
36 |
--------------------------------------------------------------------------------