├── .eslintignore
├── .eslintrc.js
├── .github
├── dependabot.yaml
├── images
│ ├── banner-dark.svg
│ └── banner-light.svg
└── workflows
│ ├── ci.yml
│ ├── dependent_pr.yml
│ └── release.yml
├── .gitignore
├── .npmignore
├── .prettierrc.js
├── Contributing.md
├── LICENSE
├── README.md
├── examples
├── README.md
├── ingest-events.ts
├── ingest-file.ts
├── ingest-string.ts
├── list-datasets.ts
├── logs.json
├── package-lock.json
├── package.json
├── query-legacy.ts
├── query.ts
├── tsconfig.json
└── winston.ts
├── jest.config.ts
├── lib
├── client.ts
├── datasets.ts
├── httpClient.ts
├── index.ts
├── limit.ts
├── logger.ts
└── users.ts
├── package-lock.json
├── package.json
├── shell.nix
├── tests
├── integration
│ ├── client.test.ts
│ ├── datasets.test.ts
│ └── winston.test.ts
└── unit
│ ├── client.test.ts
│ ├── datasets.test.ts
│ └── users.test.ts
└── tsconfig.json
/.eslintignore:
--------------------------------------------------------------------------------
1 | dist/
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser',
3 | parserOptions: {
4 | ecmaVersion: 2015,
5 | sourceType: 'module',
6 | },
7 | extends: ['prettier'],
8 | rules: {
9 | // "@typescript-eslint/explicit-function-return-type": "off",
10 | },
11 | };
12 |
--------------------------------------------------------------------------------
/.github/dependabot.yaml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: 'npm'
4 | directory: '/'
5 | schedule:
6 | interval: 'daily'
7 | - package-ecosystem: github-actions
8 | directory: /
9 | schedule:
10 | interval: daily
11 |
--------------------------------------------------------------------------------
/.github/images/banner-light.svg:
--------------------------------------------------------------------------------
1 |
390 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: CI
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 | pull_request:
8 | branches:
9 | - main
10 |
11 | jobs:
12 | build:
13 | name: Build
14 | runs-on: ubuntu-latest
15 | strategy:
16 | matrix:
17 | node:
18 | - 16.x
19 | - 17.x
20 | - 18.x
21 | - 19.x
22 | steps:
23 | - uses: actions/checkout@v3
24 | - uses: actions/setup-node@v3
25 | with:
26 | node-version: ${{ matrix.node }}
27 | cache: npm
28 | cache-dependency-path: package-lock.json
29 | - run: npm install
30 | - run: npm run build
31 |
32 | lint:
33 | name: Lint
34 | runs-on: ubuntu-latest
35 | needs: build
36 | strategy:
37 | matrix:
38 | node:
39 | - 16.x
40 | - 17.x
41 | - 18.x
42 | - 19.x
43 | steps:
44 | - uses: actions/checkout@v3
45 | - uses: actions/setup-node@v3
46 | with:
47 | node-version: ${{ matrix.node }}
48 | cache: npm
49 | cache-dependency-path: package-lock.json
50 | - run: npm install
51 | - run: npm run lint
52 |
53 | test-unit:
54 | name: Test (Unit)
55 | runs-on: ubuntu-latest
56 | needs: build
57 | strategy:
58 | matrix:
59 | node:
60 | - 16.x
61 | - 17.x
62 | - 18.x
63 | - 19.x
64 | steps:
65 | - uses: actions/checkout@v3
66 | - uses: actions/setup-node@v3
67 | with:
68 | node-version: ${{ matrix.node }}
69 | cache: npm
70 | cache-dependency-path: package-lock.json
71 | - run: npm install
72 | - run: npm run test
73 |
74 | test-integration:
75 | name: Test (Integration)
76 | runs-on: ubuntu-latest
77 | needs: build
78 | if: github.event.pull_request.head.repo.full_name == github.repository
79 | strategy:
80 | fail-fast: true
81 | matrix:
82 | node:
83 | - 16.x
84 | - 17.x
85 | - 18.x
86 | - 19.x
87 | environment:
88 | - development
89 | - staging
90 | include:
91 | - environment: development
92 | url: TESTING_DEV_API_URL
93 | token: TESTING_DEV_TOKEN
94 | org_id: TESTING_DEV_ORG_ID
95 | - environment: staging
96 | url: TESTING_STAGING_API_URL
97 | token: TESTING_STAGING_TOKEN
98 | org_id: TESTING_STAGING_ORG_ID
99 | max-parallel: 1
100 | steps:
101 | - uses: actions/checkout@v3
102 | - uses: actions/setup-node@v3
103 | with:
104 | node-version: ${{ matrix.node }}
105 | cache: npm
106 | cache-dependency-path: package-lock.json
107 | - run: npm install
108 | - env:
109 | AXIOM_URL: ${{ secrets[matrix.url] }}
110 | AXIOM_TOKEN: ${{ secrets[matrix.token] }}
111 | AXIOM_ORG_ID: ${{ secrets[matrix.org_id] }}
112 | AXIOM_DATASET_SUFFIX: ${{ github.run_id }}-${{ matrix.node }}
113 | run: npm run integration
114 |
--------------------------------------------------------------------------------
/.github/workflows/dependent_pr.yml:
--------------------------------------------------------------------------------
1 | name: Dependent PRs
2 |
3 | on:
4 | issues:
5 | types:
6 | - opened
7 | - edited
8 | - reopened
9 | pull_request_target:
10 | types:
11 | - opened
12 | - edited
13 | - reopened
14 | - synchronize
15 | schedule:
16 | - cron: "0 * * * *"
17 |
18 | jobs:
19 | check:
20 | name: Check
21 | runs-on: ubuntu-latest
22 | if: github.repository_owner == 'axiomhq'
23 | steps:
24 | - uses: z0al/dependent-issues@v1
25 | env:
26 | GITHUB_TOKEN: ${{ github.token }}
27 | GITHUB_READ_TOKEN: ${{ secrets.AXIOM_AUTOMATION_TOKEN }}
28 | with:
29 | label: dependent
30 | keywords: depends on, blocked by, needs
31 |
--------------------------------------------------------------------------------
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | name: Release
2 |
3 | on:
4 | push:
5 | tags:
6 | - "v*"
7 |
8 | env:
9 | NODEVERSION: 17.x
10 |
11 | jobs:
12 | publish:
13 | name: Publish
14 | runs-on: ubuntu-latest
15 | steps:
16 | - uses: actions/checkout@v2
17 | - uses: actions/setup-node@v2
18 | with:
19 | node-version: ${{ env.NODEVERSION }}
20 | cache: "npm"
21 | registry-url: "https://registry.npmjs.org"
22 | - run: npm install
23 | - run: npm publish --access public
24 | env:
25 | NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTOMATION_TOKEN }}
26 | - uses: actions/setup-node@v2
27 | with:
28 | registry-url: "https://npm.pkg.github.com"
29 | - run: npm publish
30 | env:
31 | NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
32 | - uses: softprops/action-gh-release@v1
33 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | # Diagnostic reports (https://nodejs.org/api/report.html)
10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11 |
12 | # Runtime data
13 | pids
14 | *.pid
15 | *.seed
16 | *.pid.lock
17 |
18 | # Directory for instrumented libs generated by jscoverage/JSCover
19 | lib-cov
20 |
21 | # Coverage directory used by tools like istanbul
22 | coverage
23 | *.lcov
24 |
25 | # nyc test coverage
26 | .nyc_output
27 |
28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29 | .grunt
30 |
31 | # Bower dependency directory (https://bower.io/)
32 | bower_components
33 |
34 | # node-waf configuration
35 | .lock-wscript
36 |
37 | # Compiled binary addons (https://nodejs.org/api/addons.html)
38 | build/Release
39 |
40 | # Dependency directories
41 | node_modules/
42 | jspm_packages/
43 |
44 | # TypeScript v1 declaration files
45 | typings/
46 |
47 | # TypeScript cache
48 | *.tsbuildinfo
49 |
50 | # Optional npm cache directory
51 | .npm
52 |
53 | # Optional eslint cache
54 | .eslintcache
55 |
56 | # Microbundle cache
57 | .rpt2_cache/
58 | .rts2_cache_cjs/
59 | .rts2_cache_es/
60 | .rts2_cache_umd/
61 |
62 | # Optional REPL history
63 | .node_repl_history
64 |
65 | # Output of 'npm pack'
66 | *.tgz
67 |
68 | # Yarn Integrity file
69 | .yarn-integrity
70 |
71 | # dotenv environment variables file
72 | .env
73 | .env.test
74 |
75 | # parcel-bundler cache (https://parceljs.org/)
76 | .cache
77 |
78 | # Next.js build output
79 | .next
80 |
81 | # Nuxt.js build / generate output
82 | .nuxt
83 | dist
84 |
85 | # Gatsby files
86 | .cache/
87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js
88 | # https://nextjs.org/blog/next-9-1#public-directory-support
89 | # public
90 |
91 | # vuepress build output
92 | .vuepress/dist
93 |
94 | # Serverless directories
95 | .serverless/
96 |
97 | # FuseBox cache
98 | .fusebox/
99 |
100 | # DynamoDB Local files
101 | .dynamodb/
102 |
103 | # TernJS port file
104 | .tern-port
105 | .vscode
106 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .github
2 | examples/
3 | lib/
4 | node_modules/
5 | tests/
6 | tsconfig.json
7 |
--------------------------------------------------------------------------------
/.prettierrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | semi: true,
3 | trailingComma: "all",
4 | singleQuote: true,
5 | printWidth: 120,
6 | tabWidth: 4
7 | };
--------------------------------------------------------------------------------
/Contributing.md:
--------------------------------------------------------------------------------
1 | ## How to Contribute
2 |
3 | 👍🎉 First of all, thank you for your interest in Axiom-node! We'd love to accept your patches and contributions! 🎉👍
4 |
5 | This project accepts contributions. In order to contribute, you should pay attention to a few guidelines:
6 |
7 | ## Reporting Issues
8 |
9 | Bugs, feature requests, and development-related questions should be directed to our GitHub [issue tracker.](https://github.com/axiomhq/axiom-node/issues)
10 |
11 | When reporting a bug, please try and provide as much context as possible such as your operating system, NodeJS version and anything else that might be relevant to the bug. For feature requests, please explain what you're trying to do and how the requested feature would help you do that.
12 |
13 | ## Setup
14 |
15 | [Fork](https://github.com/axiomhq/axiom-node), then clone this repository:
16 |
17 | ```
18 | git clone https://github.com/axiomhq/axiom-node
19 | cd axiom-node
20 | ```
21 |
22 | ### Install development dependencies
23 |
24 | ```
25 | npm install
26 | ```
27 |
28 | ## Submitting Modifications
29 |
30 | 1. It's generally best to start by opening a new issue describing the bug or feature you're intending to fix. Even if you think it's relatively minor, it's helpful to know what people are working on. Mention in the initial issue that you are planning to work on that bug or feature so that it can be assigned to you.
31 |
32 | 2. Follow the normal process of forking the project, and setup a new branch to work in. It's important that each group of changes be done in separate branches in order to ensure that a pull request only includes the commits related to that bug or feature.
33 |
34 | 3. Make sure that the tests and the linters pass by running:
35 |
36 | ```
37 | npm run test
38 | npm run lint
39 | ```
40 |
41 | 4. Do your best to have [well-formated](https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) commit messages for each change. This provides consistency throughout the project and ensures that commit messages are able to be formatted properly by various git tools.
42 |
43 | 5. Finally, push the commits to your fork and submit a [pull request](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request)
44 |
45 | ## Once you've filed the PR:
46 |
47 | - One or more maintainers will use GitHub's review feature to review your PR.
48 | - If the maintainer asks for any changes, edit your changes, push, and ask for another review.
49 | - If the maintainer decides to suggest some improvements or alternatives, modify and make improvements. Once your changes are approved, one of the project maintainers will merge them.
50 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2021, Axiom, Inc.
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all
11 | copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19 | SOFTWARE.
20 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## ⚠️ Deprecated, use [axiom-js](https://github.com/axiomhq/axiom-js) instead
2 |
3 | [axiom-js](https://github.com/axiomhq/axiom-js) is our new JavaScript library that works cross-platform and contains packages to integrate with libraries like winston or pino.
4 |
5 | ----
6 |
7 | 
8 | 
9 |
10 |
11 |
12 | [![Workflow][workflow_badge]][workflow]
13 | [![Latest Release][release_badge]][release]
14 | [![License][license_badge]][license]
15 |
16 |
17 |
18 | [Axiom](https://axiom.co) unlocks observability at any scale.
19 |
20 | - **Ingest with ease, store without limits:** Axiom’s next-generation datastore enables ingesting petabytes of data with ultimate efficiency. Ship logs from Kubernetes, AWS, Azure, Google Cloud, DigitalOcean, Nomad, and others.
21 | - **Query everything, all the time:** Whether DevOps, SecOps, or EverythingOps, query all your data no matter its age. No provisioning, no moving data from cold/archive to “hot”, and no worrying about slow queries. All your data, all. the. time.
22 | - **Powerful dashboards, for continuous observability:** Build dashboards to collect related queries and present information that’s quick and easy to digest for you and your team. Dashboards can be kept private or shared with others, and are the perfect way to bring together data from different sources
23 |
24 | For more information check out the [official documentation](https://axiom.co/docs)
25 | and our
26 | [community Discord](https://axiom.co/discord).
27 |
28 | ## Quickstart
29 |
30 | Install using `npm install`:
31 |
32 | ```shell
33 | npm install @axiomhq/axiom-node
34 | ```
35 |
36 | If you use the [Axiom CLI](https://github.com/axiomhq/cli), run `eval $(axiom config export -f)` to configure your environment variables.
37 |
38 | Otherwise create a personal token in [the Axiom settings](https://app.axiom.co/profile) and export it as `AXIOM_TOKEN`. Set `AXIOM_ORG_ID` to the organization ID from the settings page of the organization you want to access.
39 |
40 | You can also configure the client using options passed to the constructor of the Client:
41 |
42 | ```ts
43 | const client = new Client({
44 | token: process.env.AXIOM_TOKEN,
45 | orgId: process.env.AXIOM_ORG_ID,
46 | });
47 | ```
48 |
49 | Create and use a client like this:
50 |
51 | ```ts
52 | import { Client } from '@axiomhq/axiom-node';
53 |
54 | async function main() {
55 | const client = new Client();
56 |
57 | await client.ingestEvents('my-dataset', [{ foo: 'bar' }]);
58 |
59 | const res = await client.query(`['my-dataset'] | where foo == 'bar' | limit 100`);
60 | }
61 | ```
62 |
63 | ## Using Axiom transport for Winston
64 |
65 | You can use Winston logger to send logs to Axiom. First, install the `winston` and `@axiomhq/axiom-node` packages, then
66 | create an instance of the logger with the AxiomTransport.
67 |
68 | ```ts
69 | import winston from 'winston';
70 | import { WinstonTransport as AxiomTransport } from '@axiomhq/axiom-node';
71 |
72 | const logger = winston.createLogger({
73 | level: 'info',
74 | format: winston.format.json(),
75 | defaultMeta: { service: 'user-service' },
76 | transports: [
77 | new AxiomTransport({
78 | dataset: 'my-dataset', // defaults to process.env.AXIOM_DATASET
79 | token: 'my-token', // defaults to process.env.AXIOM_TOKEN
80 | orgId: 'my-org-id', // defaults to process.env.AXIOM_ORG_ID
81 | }),
82 | ],
83 | });
84 | ```
85 |
86 | ### Error, exception and rejection handling
87 |
88 | If you want to log `Error`s, we recommend using the
89 | [`winston.format.errors`](https://github.com/winstonjs/logform#errors)
90 | formatter, for example like this:
91 |
92 | ```ts
93 | import winston from 'winston';
94 | import { WinstonTransport as AxiomTransport } from '@axiomhq/axiom-node';
95 |
96 | const { combine, errors, json } = winston.format;
97 |
98 | const axiomTransport = new AxiomTransport({ ... });
99 | const logger = winston.createLogger({
100 | // 8<----snip----
101 | format: combine(errors({ stack: true }), json()),
102 | // 8<----snip----
103 | });
104 | ```
105 |
106 | To automatically log uncaught exceptions and rejections, add the Axiom transport to the
107 | [`exceptionHandlers`](https://github.com/winstonjs/winston#exceptions) and
108 | [`rejectionHandlers`](https://github.com/winstonjs/winston#rejections) like
109 | this:
110 |
111 | ```ts
112 | import winston from 'winston';
113 | import { WinstonTransport as AxiomTransport } from '@axiomhq/axiom-node';
114 |
115 | const axiomTransport = new AxiomTransport({ ... });
116 | const logger = winston.createLogger({
117 | // 8<----snip----
118 | transports: [axiomTransport],
119 | exceptionHandlers: [axiomTransport],
120 | rejectionHandlers: [axiomTransport],
121 | // 8<----snip----
122 | });
123 | ```
124 |
125 | For further examples, see the [examples](examples) directory.
126 |
127 | ## License
128 |
129 | Distributed under the [MIT License](LICENSE).
130 |
131 |
132 |
133 | [workflow]: https://github.com/axiomhq/axiom-node/actions/workflows/ci.yml
134 | [workflow_badge]: https://img.shields.io/github/actions/workflow/status/axiomhq/axiom-node/ci.yml?branch=main&ghcache=unused
135 | [release]: https://github.com/axiomhq/axiom-node/releases/latest
136 | [release_badge]: https://img.shields.io/github/release/axiomhq/axiom-node.svg?ghcache=unused
137 | [license]: https://opensource.org/licenses/MIT
138 | [license_badge]: https://img.shields.io/github/license/axiomhq/axiom-node.svg?color=blue&ghcache=unused
139 |
--------------------------------------------------------------------------------
/examples/README.md:
--------------------------------------------------------------------------------
1 | # Examples
2 |
3 | ## Usage
4 |
5 | ```shell
6 | export AXIOM_TOKEN="..."
7 | npx ts-node
8 | ```
9 |
10 |
11 | ## Examples
12 |
13 | * [ingest-file.ts](ingest-file.ts): How to ingest the contents of a file into
14 | Axiom.
15 |
16 | * [list-datasets.ts](list-datasets.ts): How to retrieve a list of datasets.
17 |
18 | * [query-legacy.ts](query-legacy.ts): How to query a dataset.
19 |
20 | * [query.ts](query.ts): How to query a dataset using the Axiom Processing Language (APL).
21 |
22 | * [winston.ts](winston.ts): How to enable a logger and configure its transports.
23 |
--------------------------------------------------------------------------------
/examples/ingest-events.ts:
--------------------------------------------------------------------------------
1 | import { Client } from '@axiomhq/axiom-node';
2 |
3 | const client = new Client();
4 |
5 | async function ingest() {
6 | const events = [
7 | {
8 | foo: 'bar',
9 | },
10 | {
11 | x: 'y',
12 | },
13 | ];
14 |
15 | const res = await client.ingestEvents('test', events);
16 | console.log('Ingested %d events with %d failures', res.ingested, res.failed);
17 | // Ingested 2 events with 0 failures
18 | }
19 |
20 | ingest();
21 |
--------------------------------------------------------------------------------
/examples/ingest-file.ts:
--------------------------------------------------------------------------------
1 | import fs from 'fs';
2 | import { Client, ContentType, ContentEncoding } from '@axiomhq/axiom-node';
3 |
4 | const client = new Client();
5 |
6 | async function ingestFile() {
7 | const stream = fs.createReadStream('logs.json');
8 | const res = await client.ingest('test', stream, ContentType.JSON, ContentEncoding.Identity);
9 | console.log('Ingested %d events with %d failures', res.ingested, res.failed);
10 | // Ingested 3 events with 0 failures
11 | }
12 |
13 | ingestFile();
14 |
--------------------------------------------------------------------------------
/examples/ingest-string.ts:
--------------------------------------------------------------------------------
1 | const { Readable } = require('stream');
2 | import { Client, ContentType, ContentEncoding } from '@axiomhq/axiom-node';
3 |
4 | const client = new Client();
5 |
6 | async function ingestString() {
7 | const str = JSON.stringify([{ foo: 'bar' }, { foo: 'bar' }, { bar: 'baz' }]);
8 | const stream = Readable.from(str);
9 | const res = await client.ingest('test', stream, ContentType.JSON, ContentEncoding.Identity);
10 | console.log('Ingested %d events with %d failures', res.ingested, res.failed);
11 | // Ingested 3 events with 0 failures
12 | }
13 |
14 | ingestString();
15 |
--------------------------------------------------------------------------------
/examples/list-datasets.ts:
--------------------------------------------------------------------------------
1 | import { Client } from '@axiomhq/axiom-node';
2 |
3 | const client = new Client();
4 |
5 | async function listDatasets() {
6 | const res = await client.datasets.list();
7 | for (let ds of res) {
8 | console.log(`found dataset: ${ds.name}`);
9 | }
10 | }
11 |
12 | listDatasets();
13 |
--------------------------------------------------------------------------------
/examples/logs.json:
--------------------------------------------------------------------------------
1 | [
2 | {"foo": "bar"},
3 | {"foo": "bar"},
4 | {"bar": "baz"}
5 | ]
--------------------------------------------------------------------------------
/examples/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "examples",
3 | "version": "1.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "examples",
9 | "version": "1.0.0",
10 | "dependencies": {
11 | "@axiomhq/axiom-node": "../lib",
12 | "winston": "^3.8.2"
13 | },
14 | "devDependencies": {
15 | "@types/node": "^17.0.42",
16 | "ts-node": "^10.8.1",
17 | "typescript": "^4.7.3"
18 | }
19 | },
20 | "../lib": {},
21 | "node_modules/@axiomhq/axiom-node": {
22 | "resolved": "../lib",
23 | "link": true
24 | },
25 | "node_modules/@colors/colors": {
26 | "version": "1.5.0",
27 | "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
28 | "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
29 | "engines": {
30 | "node": ">=0.1.90"
31 | }
32 | },
33 | "node_modules/@cspotcode/source-map-support": {
34 | "version": "0.8.1",
35 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
36 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
37 | "dev": true,
38 | "dependencies": {
39 | "@jridgewell/trace-mapping": "0.3.9"
40 | },
41 | "engines": {
42 | "node": ">=12"
43 | }
44 | },
45 | "node_modules/@dabh/diagnostics": {
46 | "version": "2.0.3",
47 | "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz",
48 | "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==",
49 | "dependencies": {
50 | "colorspace": "1.1.x",
51 | "enabled": "2.0.x",
52 | "kuler": "^2.0.0"
53 | }
54 | },
55 | "node_modules/@jridgewell/resolve-uri": {
56 | "version": "3.0.7",
57 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz",
58 | "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==",
59 | "dev": true,
60 | "engines": {
61 | "node": ">=6.0.0"
62 | }
63 | },
64 | "node_modules/@jridgewell/sourcemap-codec": {
65 | "version": "1.4.13",
66 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz",
67 | "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==",
68 | "dev": true
69 | },
70 | "node_modules/@jridgewell/trace-mapping": {
71 | "version": "0.3.9",
72 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
73 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
74 | "dev": true,
75 | "dependencies": {
76 | "@jridgewell/resolve-uri": "^3.0.3",
77 | "@jridgewell/sourcemap-codec": "^1.4.10"
78 | }
79 | },
80 | "node_modules/@tsconfig/node10": {
81 | "version": "1.0.9",
82 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
83 | "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
84 | "dev": true
85 | },
86 | "node_modules/@tsconfig/node12": {
87 | "version": "1.0.10",
88 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.10.tgz",
89 | "integrity": "sha512-N+srakvPaYMGkwjNDx3ASx65Zl3QG8dJgVtIB+YMOkucU+zctlv/hdP5250VKdDHSDoW9PFZoCqbqNcAPjCjXA==",
90 | "dev": true
91 | },
92 | "node_modules/@tsconfig/node14": {
93 | "version": "1.0.2",
94 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.2.tgz",
95 | "integrity": "sha512-YwrUA5ysDXHFYfL0Xed9x3sNS4P+aKlCOnnbqUa2E5HdQshHFleCJVrj1PlGTb4GgFUCDyte1v3JWLy2sz8Oqg==",
96 | "dev": true
97 | },
98 | "node_modules/@tsconfig/node16": {
99 | "version": "1.0.3",
100 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz",
101 | "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==",
102 | "dev": true
103 | },
104 | "node_modules/@types/node": {
105 | "version": "17.0.42",
106 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.42.tgz",
107 | "integrity": "sha512-Q5BPGyGKcvQgAMbsr7qEGN/kIPN6zZecYYABeTDBizOsau+2NMdSVTar9UQw21A2+JyA2KRNDYaYrPB0Rpk2oQ==",
108 | "dev": true
109 | },
110 | "node_modules/acorn": {
111 | "version": "8.7.1",
112 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz",
113 | "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==",
114 | "dev": true,
115 | "bin": {
116 | "acorn": "bin/acorn"
117 | },
118 | "engines": {
119 | "node": ">=0.4.0"
120 | }
121 | },
122 | "node_modules/acorn-walk": {
123 | "version": "8.2.0",
124 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
125 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
126 | "dev": true,
127 | "engines": {
128 | "node": ">=0.4.0"
129 | }
130 | },
131 | "node_modules/arg": {
132 | "version": "4.1.3",
133 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
134 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
135 | "dev": true
136 | },
137 | "node_modules/async": {
138 | "version": "3.2.4",
139 | "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
140 | "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
141 | },
142 | "node_modules/color": {
143 | "version": "3.2.1",
144 | "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
145 | "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
146 | "dependencies": {
147 | "color-convert": "^1.9.3",
148 | "color-string": "^1.6.0"
149 | }
150 | },
151 | "node_modules/color-convert": {
152 | "version": "1.9.3",
153 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
154 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
155 | "dependencies": {
156 | "color-name": "1.1.3"
157 | }
158 | },
159 | "node_modules/color-name": {
160 | "version": "1.1.3",
161 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
162 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
163 | },
164 | "node_modules/color-string": {
165 | "version": "1.9.1",
166 | "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
167 | "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
168 | "dependencies": {
169 | "color-name": "^1.0.0",
170 | "simple-swizzle": "^0.2.2"
171 | }
172 | },
173 | "node_modules/colorspace": {
174 | "version": "1.1.4",
175 | "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz",
176 | "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==",
177 | "dependencies": {
178 | "color": "^3.1.3",
179 | "text-hex": "1.0.x"
180 | }
181 | },
182 | "node_modules/create-require": {
183 | "version": "1.1.1",
184 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
185 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
186 | "dev": true
187 | },
188 | "node_modules/diff": {
189 | "version": "4.0.2",
190 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
191 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
192 | "dev": true,
193 | "engines": {
194 | "node": ">=0.3.1"
195 | }
196 | },
197 | "node_modules/enabled": {
198 | "version": "2.0.0",
199 | "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
200 | "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ=="
201 | },
202 | "node_modules/fecha": {
203 | "version": "4.2.3",
204 | "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz",
205 | "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw=="
206 | },
207 | "node_modules/fn.name": {
208 | "version": "1.1.0",
209 | "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
210 | "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
211 | },
212 | "node_modules/inherits": {
213 | "version": "2.0.4",
214 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
215 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
216 | },
217 | "node_modules/is-arrayish": {
218 | "version": "0.3.2",
219 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
220 | "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
221 | },
222 | "node_modules/is-stream": {
223 | "version": "2.0.1",
224 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
225 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
226 | "engines": {
227 | "node": ">=8"
228 | },
229 | "funding": {
230 | "url": "https://github.com/sponsors/sindresorhus"
231 | }
232 | },
233 | "node_modules/kuler": {
234 | "version": "2.0.0",
235 | "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
236 | "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A=="
237 | },
238 | "node_modules/logform": {
239 | "version": "2.4.2",
240 | "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz",
241 | "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==",
242 | "dependencies": {
243 | "@colors/colors": "1.5.0",
244 | "fecha": "^4.2.0",
245 | "ms": "^2.1.1",
246 | "safe-stable-stringify": "^2.3.1",
247 | "triple-beam": "^1.3.0"
248 | }
249 | },
250 | "node_modules/make-error": {
251 | "version": "1.3.6",
252 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
253 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
254 | "dev": true
255 | },
256 | "node_modules/ms": {
257 | "version": "2.1.3",
258 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
259 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
260 | },
261 | "node_modules/one-time": {
262 | "version": "1.0.0",
263 | "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
264 | "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==",
265 | "dependencies": {
266 | "fn.name": "1.x.x"
267 | }
268 | },
269 | "node_modules/readable-stream": {
270 | "version": "3.6.0",
271 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
272 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
273 | "dependencies": {
274 | "inherits": "^2.0.3",
275 | "string_decoder": "^1.1.1",
276 | "util-deprecate": "^1.0.1"
277 | },
278 | "engines": {
279 | "node": ">= 6"
280 | }
281 | },
282 | "node_modules/safe-buffer": {
283 | "version": "5.2.1",
284 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
285 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
286 | "funding": [
287 | {
288 | "type": "github",
289 | "url": "https://github.com/sponsors/feross"
290 | },
291 | {
292 | "type": "patreon",
293 | "url": "https://www.patreon.com/feross"
294 | },
295 | {
296 | "type": "consulting",
297 | "url": "https://feross.org/support"
298 | }
299 | ]
300 | },
301 | "node_modules/safe-stable-stringify": {
302 | "version": "2.4.0",
303 | "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.0.tgz",
304 | "integrity": "sha512-eehKHKpab6E741ud7ZIMcXhKcP6TSIezPkNZhy5U8xC6+VvrRdUA2tMgxGxaGl4cz7c2Ew5+mg5+wNB16KQqrA==",
305 | "engines": {
306 | "node": ">=10"
307 | }
308 | },
309 | "node_modules/simple-swizzle": {
310 | "version": "0.2.2",
311 | "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
312 | "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
313 | "dependencies": {
314 | "is-arrayish": "^0.3.1"
315 | }
316 | },
317 | "node_modules/stack-trace": {
318 | "version": "0.0.10",
319 | "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
320 | "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==",
321 | "engines": {
322 | "node": "*"
323 | }
324 | },
325 | "node_modules/string_decoder": {
326 | "version": "1.3.0",
327 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
328 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
329 | "dependencies": {
330 | "safe-buffer": "~5.2.0"
331 | }
332 | },
333 | "node_modules/text-hex": {
334 | "version": "1.0.0",
335 | "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
336 | "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="
337 | },
338 | "node_modules/triple-beam": {
339 | "version": "1.3.0",
340 | "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
341 | "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw=="
342 | },
343 | "node_modules/ts-node": {
344 | "version": "10.8.1",
345 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.1.tgz",
346 | "integrity": "sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==",
347 | "dev": true,
348 | "dependencies": {
349 | "@cspotcode/source-map-support": "^0.8.0",
350 | "@tsconfig/node10": "^1.0.7",
351 | "@tsconfig/node12": "^1.0.7",
352 | "@tsconfig/node14": "^1.0.0",
353 | "@tsconfig/node16": "^1.0.2",
354 | "acorn": "^8.4.1",
355 | "acorn-walk": "^8.1.1",
356 | "arg": "^4.1.0",
357 | "create-require": "^1.1.0",
358 | "diff": "^4.0.1",
359 | "make-error": "^1.1.1",
360 | "v8-compile-cache-lib": "^3.0.1",
361 | "yn": "3.1.1"
362 | },
363 | "bin": {
364 | "ts-node": "dist/bin.js",
365 | "ts-node-cwd": "dist/bin-cwd.js",
366 | "ts-node-esm": "dist/bin-esm.js",
367 | "ts-node-script": "dist/bin-script.js",
368 | "ts-node-transpile-only": "dist/bin-transpile.js",
369 | "ts-script": "dist/bin-script-deprecated.js"
370 | },
371 | "peerDependencies": {
372 | "@swc/core": ">=1.2.50",
373 | "@swc/wasm": ">=1.2.50",
374 | "@types/node": "*",
375 | "typescript": ">=2.7"
376 | },
377 | "peerDependenciesMeta": {
378 | "@swc/core": {
379 | "optional": true
380 | },
381 | "@swc/wasm": {
382 | "optional": true
383 | }
384 | }
385 | },
386 | "node_modules/typescript": {
387 | "version": "4.7.3",
388 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz",
389 | "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==",
390 | "dev": true,
391 | "bin": {
392 | "tsc": "bin/tsc",
393 | "tsserver": "bin/tsserver"
394 | },
395 | "engines": {
396 | "node": ">=4.2.0"
397 | }
398 | },
399 | "node_modules/util-deprecate": {
400 | "version": "1.0.2",
401 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
402 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
403 | },
404 | "node_modules/v8-compile-cache-lib": {
405 | "version": "3.0.1",
406 | "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
407 | "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
408 | "dev": true
409 | },
410 | "node_modules/winston": {
411 | "version": "3.8.2",
412 | "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.2.tgz",
413 | "integrity": "sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==",
414 | "dependencies": {
415 | "@colors/colors": "1.5.0",
416 | "@dabh/diagnostics": "^2.0.2",
417 | "async": "^3.2.3",
418 | "is-stream": "^2.0.0",
419 | "logform": "^2.4.0",
420 | "one-time": "^1.0.0",
421 | "readable-stream": "^3.4.0",
422 | "safe-stable-stringify": "^2.3.1",
423 | "stack-trace": "0.0.x",
424 | "triple-beam": "^1.3.0",
425 | "winston-transport": "^4.5.0"
426 | },
427 | "engines": {
428 | "node": ">= 12.0.0"
429 | }
430 | },
431 | "node_modules/winston-transport": {
432 | "version": "4.5.0",
433 | "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz",
434 | "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==",
435 | "dependencies": {
436 | "logform": "^2.3.2",
437 | "readable-stream": "^3.6.0",
438 | "triple-beam": "^1.3.0"
439 | },
440 | "engines": {
441 | "node": ">= 6.4.0"
442 | }
443 | },
444 | "node_modules/yn": {
445 | "version": "3.1.1",
446 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
447 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
448 | "dev": true,
449 | "engines": {
450 | "node": ">=6"
451 | }
452 | }
453 | },
454 | "dependencies": {
455 | "@axiomhq/axiom-node": {
456 | "version": "file:../lib"
457 | },
458 | "@colors/colors": {
459 | "version": "1.5.0",
460 | "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
461 | "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ=="
462 | },
463 | "@cspotcode/source-map-support": {
464 | "version": "0.8.1",
465 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
466 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
467 | "dev": true,
468 | "requires": {
469 | "@jridgewell/trace-mapping": "0.3.9"
470 | }
471 | },
472 | "@dabh/diagnostics": {
473 | "version": "2.0.3",
474 | "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz",
475 | "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==",
476 | "requires": {
477 | "colorspace": "1.1.x",
478 | "enabled": "2.0.x",
479 | "kuler": "^2.0.0"
480 | }
481 | },
482 | "@jridgewell/resolve-uri": {
483 | "version": "3.0.7",
484 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz",
485 | "integrity": "sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==",
486 | "dev": true
487 | },
488 | "@jridgewell/sourcemap-codec": {
489 | "version": "1.4.13",
490 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz",
491 | "integrity": "sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==",
492 | "dev": true
493 | },
494 | "@jridgewell/trace-mapping": {
495 | "version": "0.3.9",
496 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
497 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
498 | "dev": true,
499 | "requires": {
500 | "@jridgewell/resolve-uri": "^3.0.3",
501 | "@jridgewell/sourcemap-codec": "^1.4.10"
502 | }
503 | },
504 | "@tsconfig/node10": {
505 | "version": "1.0.9",
506 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
507 | "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
508 | "dev": true
509 | },
510 | "@tsconfig/node12": {
511 | "version": "1.0.10",
512 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.10.tgz",
513 | "integrity": "sha512-N+srakvPaYMGkwjNDx3ASx65Zl3QG8dJgVtIB+YMOkucU+zctlv/hdP5250VKdDHSDoW9PFZoCqbqNcAPjCjXA==",
514 | "dev": true
515 | },
516 | "@tsconfig/node14": {
517 | "version": "1.0.2",
518 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.2.tgz",
519 | "integrity": "sha512-YwrUA5ysDXHFYfL0Xed9x3sNS4P+aKlCOnnbqUa2E5HdQshHFleCJVrj1PlGTb4GgFUCDyte1v3JWLy2sz8Oqg==",
520 | "dev": true
521 | },
522 | "@tsconfig/node16": {
523 | "version": "1.0.3",
524 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz",
525 | "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==",
526 | "dev": true
527 | },
528 | "@types/node": {
529 | "version": "17.0.42",
530 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.42.tgz",
531 | "integrity": "sha512-Q5BPGyGKcvQgAMbsr7qEGN/kIPN6zZecYYABeTDBizOsau+2NMdSVTar9UQw21A2+JyA2KRNDYaYrPB0Rpk2oQ==",
532 | "dev": true
533 | },
534 | "acorn": {
535 | "version": "8.7.1",
536 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz",
537 | "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==",
538 | "dev": true
539 | },
540 | "acorn-walk": {
541 | "version": "8.2.0",
542 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
543 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
544 | "dev": true
545 | },
546 | "arg": {
547 | "version": "4.1.3",
548 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
549 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
550 | "dev": true
551 | },
552 | "async": {
553 | "version": "3.2.4",
554 | "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
555 | "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
556 | },
557 | "color": {
558 | "version": "3.2.1",
559 | "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
560 | "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
561 | "requires": {
562 | "color-convert": "^1.9.3",
563 | "color-string": "^1.6.0"
564 | }
565 | },
566 | "color-convert": {
567 | "version": "1.9.3",
568 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
569 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
570 | "requires": {
571 | "color-name": "1.1.3"
572 | }
573 | },
574 | "color-name": {
575 | "version": "1.1.3",
576 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
577 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
578 | },
579 | "color-string": {
580 | "version": "1.9.1",
581 | "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
582 | "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
583 | "requires": {
584 | "color-name": "^1.0.0",
585 | "simple-swizzle": "^0.2.2"
586 | }
587 | },
588 | "colorspace": {
589 | "version": "1.1.4",
590 | "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz",
591 | "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==",
592 | "requires": {
593 | "color": "^3.1.3",
594 | "text-hex": "1.0.x"
595 | }
596 | },
597 | "create-require": {
598 | "version": "1.1.1",
599 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
600 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
601 | "dev": true
602 | },
603 | "diff": {
604 | "version": "4.0.2",
605 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
606 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
607 | "dev": true
608 | },
609 | "enabled": {
610 | "version": "2.0.0",
611 | "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
612 | "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ=="
613 | },
614 | "fecha": {
615 | "version": "4.2.3",
616 | "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz",
617 | "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw=="
618 | },
619 | "fn.name": {
620 | "version": "1.1.0",
621 | "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
622 | "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
623 | },
624 | "inherits": {
625 | "version": "2.0.4",
626 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
627 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
628 | },
629 | "is-arrayish": {
630 | "version": "0.3.2",
631 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
632 | "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
633 | },
634 | "is-stream": {
635 | "version": "2.0.1",
636 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
637 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
638 | },
639 | "kuler": {
640 | "version": "2.0.0",
641 | "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
642 | "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A=="
643 | },
644 | "logform": {
645 | "version": "2.4.2",
646 | "resolved": "https://registry.npmjs.org/logform/-/logform-2.4.2.tgz",
647 | "integrity": "sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==",
648 | "requires": {
649 | "@colors/colors": "1.5.0",
650 | "fecha": "^4.2.0",
651 | "ms": "^2.1.1",
652 | "safe-stable-stringify": "^2.3.1",
653 | "triple-beam": "^1.3.0"
654 | }
655 | },
656 | "make-error": {
657 | "version": "1.3.6",
658 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
659 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
660 | "dev": true
661 | },
662 | "ms": {
663 | "version": "2.1.3",
664 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
665 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
666 | },
667 | "one-time": {
668 | "version": "1.0.0",
669 | "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
670 | "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==",
671 | "requires": {
672 | "fn.name": "1.x.x"
673 | }
674 | },
675 | "readable-stream": {
676 | "version": "3.6.0",
677 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
678 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
679 | "requires": {
680 | "inherits": "^2.0.3",
681 | "string_decoder": "^1.1.1",
682 | "util-deprecate": "^1.0.1"
683 | }
684 | },
685 | "safe-buffer": {
686 | "version": "5.2.1",
687 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
688 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
689 | },
690 | "safe-stable-stringify": {
691 | "version": "2.4.0",
692 | "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.0.tgz",
693 | "integrity": "sha512-eehKHKpab6E741ud7ZIMcXhKcP6TSIezPkNZhy5U8xC6+VvrRdUA2tMgxGxaGl4cz7c2Ew5+mg5+wNB16KQqrA=="
694 | },
695 | "simple-swizzle": {
696 | "version": "0.2.2",
697 | "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
698 | "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
699 | "requires": {
700 | "is-arrayish": "^0.3.1"
701 | }
702 | },
703 | "stack-trace": {
704 | "version": "0.0.10",
705 | "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
706 | "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg=="
707 | },
708 | "string_decoder": {
709 | "version": "1.3.0",
710 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
711 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
712 | "requires": {
713 | "safe-buffer": "~5.2.0"
714 | }
715 | },
716 | "text-hex": {
717 | "version": "1.0.0",
718 | "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
719 | "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="
720 | },
721 | "triple-beam": {
722 | "version": "1.3.0",
723 | "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
724 | "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw=="
725 | },
726 | "ts-node": {
727 | "version": "10.8.1",
728 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.1.tgz",
729 | "integrity": "sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==",
730 | "dev": true,
731 | "requires": {
732 | "@cspotcode/source-map-support": "^0.8.0",
733 | "@tsconfig/node10": "^1.0.7",
734 | "@tsconfig/node12": "^1.0.7",
735 | "@tsconfig/node14": "^1.0.0",
736 | "@tsconfig/node16": "^1.0.2",
737 | "acorn": "^8.4.1",
738 | "acorn-walk": "^8.1.1",
739 | "arg": "^4.1.0",
740 | "create-require": "^1.1.0",
741 | "diff": "^4.0.1",
742 | "make-error": "^1.1.1",
743 | "v8-compile-cache-lib": "^3.0.1",
744 | "yn": "3.1.1"
745 | }
746 | },
747 | "typescript": {
748 | "version": "4.7.3",
749 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz",
750 | "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==",
751 | "dev": true
752 | },
753 | "util-deprecate": {
754 | "version": "1.0.2",
755 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
756 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
757 | },
758 | "v8-compile-cache-lib": {
759 | "version": "3.0.1",
760 | "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
761 | "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
762 | "dev": true
763 | },
764 | "winston": {
765 | "version": "3.8.2",
766 | "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.2.tgz",
767 | "integrity": "sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==",
768 | "requires": {
769 | "@colors/colors": "1.5.0",
770 | "@dabh/diagnostics": "^2.0.2",
771 | "async": "^3.2.3",
772 | "is-stream": "^2.0.0",
773 | "logform": "^2.4.0",
774 | "one-time": "^1.0.0",
775 | "readable-stream": "^3.4.0",
776 | "safe-stable-stringify": "^2.3.1",
777 | "stack-trace": "0.0.x",
778 | "triple-beam": "^1.3.0",
779 | "winston-transport": "^4.5.0"
780 | }
781 | },
782 | "winston-transport": {
783 | "version": "4.5.0",
784 | "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz",
785 | "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==",
786 | "requires": {
787 | "logform": "^2.3.2",
788 | "readable-stream": "^3.6.0",
789 | "triple-beam": "^1.3.0"
790 | }
791 | },
792 | "yn": {
793 | "version": "3.1.1",
794 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
795 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
796 | "dev": true
797 | }
798 | }
799 | }
800 |
--------------------------------------------------------------------------------
/examples/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "examples",
3 | "version": "1.0.0",
4 | "description": "examples on using axiom-node",
5 | "scripts": {
6 | "build": "tsc",
7 | "example": "ts-node"
8 | },
9 | "dependencies": {
10 | "@axiomhq/axiom-node": "../lib",
11 | "winston": "^3.8.2"
12 | },
13 | "devDependencies": {
14 | "@types/node": "^17.0.42",
15 | "ts-node": "^10.8.1",
16 | "typescript": "^4.7.3"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/examples/query-legacy.ts:
--------------------------------------------------------------------------------
1 | // The purpose of this example is to show how to query a dataset.
2 | import { Client } from '@axiomhq/axiom-node';
3 |
4 | const client = new Client();
5 |
6 | async function query() {
7 | const endTime = new Date(Date.now()).toISOString();
8 | const startTime = new Date(new Date().getTime() - 1 * 60 * 60).toISOString(); // 1 minute
9 | const query = {
10 | startTime: startTime,
11 | endTime: endTime,
12 | resolution: 'auto',
13 | };
14 |
15 | const res = await client.queryLegacy('id', query);
16 | if (!res.matches || res.matches?.length === 0) {
17 | console.warn('no matches found');
18 | return;
19 | }
20 |
21 | for (let matched of res.matches) {
22 | console.log(matched.data);
23 | }
24 | }
25 |
26 | query();
27 |
--------------------------------------------------------------------------------
/examples/query.ts:
--------------------------------------------------------------------------------
1 | // The purpose of this example is to show how to query a dataset using the Axiom
2 | // Processing Language (APL).
3 | import { Client } from '@axiomhq/axiom-node';
4 |
5 | const client = new Client();
6 |
7 | async function query() {
8 | const aplQuery = "['my-dataset'] | where status == 500";
9 |
10 | const res = await client.query(aplQuery);
11 | if (!res.matches || res.matches.length === 0) {
12 | console.warn('no matches found');
13 | return;
14 | }
15 |
16 | for (let matched of res.matches) {
17 | console.log(matched.data);
18 | }
19 | }
20 |
21 | query();
22 |
--------------------------------------------------------------------------------
/examples/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es2015",
4 | "module": "commonjs",
5 | "baseUrl": "lib",
6 | "moduleResolution": "node",
7 | "outDir": "./dist",
8 | "declaration": true,
9 | "strict": true,
10 | "esModuleInterop": true
11 | },
12 | "exclude": [
13 | ".git",
14 | ".github",
15 | "node_modules"
16 | ],
17 | "include": [
18 | "**/*"
19 | ]
20 | }
--------------------------------------------------------------------------------
/examples/winston.ts:
--------------------------------------------------------------------------------
1 | import winston from 'winston';
2 | import { WinstonTransport as AxiomTransport } from '@axiomhq/axiom-node';
3 |
4 | const logger = winston.createLogger({
5 | level: 'info',
6 | format: winston.format.json(),
7 | defaultMeta: { service: 'user-service' },
8 | transports: [
9 | // You can pass an option here, if you don't the transport is configured
10 | // using environment variables like `AXIOM_DATASET` and `AXIOM_TOKEN`
11 | new AxiomTransport(),
12 | ],
13 | });
14 |
15 | // Add the console logger if we're not in production
16 | if (process.env.NODE_ENV != 'production') {
17 | logger.add(
18 | new winston.transports.Console({
19 | format: winston.format.simple(),
20 | }),
21 | );
22 | }
23 |
24 | logger.log({
25 | level: 'info',
26 | message: 'Logger successfuly setup',
27 | });
28 |
--------------------------------------------------------------------------------
/jest.config.ts:
--------------------------------------------------------------------------------
1 | import { defaults } from 'jest-config'
2 | import type {Config} from '@jest/types';
3 |
4 | const config: Config.InitialOptions = {
5 | preset: 'ts-jest',
6 | testEnvironment: 'node',
7 | moduleFileExtensions: ['ts', ...defaults.moduleFileExtensions]
8 | };
9 | export default config;
10 |
--------------------------------------------------------------------------------
/lib/client.ts:
--------------------------------------------------------------------------------
1 | import { datasets } from './datasets';
2 | import { users } from './users';
3 | import HTTPClient, { ClientOptions } from './httpClient';
4 | import { gzip } from 'zlib';
5 | import { promisify } from 'util';
6 | import { Readable, Stream } from 'stream';
7 |
8 | export class Client extends HTTPClient {
9 | datasets: datasets.Service;
10 | users: users.Service;
11 | localPath = '/v1';
12 |
13 | constructor(options?: ClientOptions) {
14 | super(options);
15 | this.datasets = new datasets.Service(options);
16 | this.users = new users.Service(options);
17 | }
18 |
19 | ingest = (
20 | id: string,
21 | stream: Stream,
22 | contentType: ContentType,
23 | contentEncoding: ContentEncoding,
24 | options?: IngestOptions,
25 | ): Promise =>
26 | this.client
27 | .post(this.localPath + '/datasets/' + id + '/ingest', stream, {
28 | headers: {
29 | 'Content-Type': contentType,
30 | 'Content-Encoding': contentEncoding,
31 | },
32 | params: {
33 | 'timestamp-field': options?.timestampField,
34 | 'timestamp-format': options?.timestampFormat,
35 | 'csv-delimiter': options?.csvDelimiter,
36 | },
37 | })
38 | .then((response) => {
39 | return response.data;
40 | });
41 |
42 | ingestBuffer = (
43 | id: string,
44 | buffer: Buffer,
45 | contentType: ContentType,
46 | contentEncoding: ContentEncoding,
47 | options?: IngestOptions,
48 | ): Promise => this.ingest(id, Readable.from(buffer), contentType, contentEncoding, options);
49 |
50 | ingestString = (
51 | id: string,
52 | data: string,
53 | contentType: ContentType,
54 | contentEncoding: ContentEncoding,
55 | options?: IngestOptions,
56 | ): Promise => this.ingest(id, Readable.from(data), contentType, contentEncoding, options);
57 |
58 | ingestEvents = async (
59 | id: string,
60 | events: Array