diff --git a/lib/client/index.ts b/lib/client/index.ts index 32355f4..ba7d945 100644 --- a/lib/client/index.ts +++ b/lib/client/index.ts @@ -1,3 +1,3 @@ -export * from "./client"; +export * from "./client.js"; export * from "./rpc/rpcClient"; export * from "./indexer/indexerClient"; diff --git a/lib/client/indexer/markets.ts b/lib/client/indexer/markets.ts index 6bd1d59..0bf2b78 100644 --- a/lib/client/indexer/markets.ts +++ b/lib/client/indexer/markets.ts @@ -23,6 +23,7 @@ import { import { generateSubscriptionOp, Client as IndexerGraphQLClient, + order_by, orders_bool_exp, orders_order_by, orders_select_column, @@ -134,8 +135,11 @@ export class FutarchyIndexerMarketsClient implements FutarchyMarketsClient { return market; } - watchCurrentTwapPrice(marketKey: PublicKey): Observable { - const { query, variables } = generateSubscriptionOp({ + watchCurrentTwapPrice( + marketKey: PublicKey, + includeOracleData?: boolean + ): Observable { + const queryForGenerate = { twap_chart_data: { __args: { where: { @@ -143,7 +147,7 @@ export class FutarchyIndexerMarketsClient implements FutarchyMarketsClient { }, order_by: [ { - interv: "desc" + interv: "desc" as order_by } ], limit: 1 @@ -158,8 +162,31 @@ export class FutarchyIndexerMarketsClient implements FutarchyMarketsClient { } }, interv: true - } - }); + }, + twaps: undefined as any + }; + + if (includeOracleData) { + queryForGenerate.twaps = { + __args: { + where: { + market_acct: { _eq: marketKey.toString() } + }, + order_by: [ + { + created_at: "desc" as order_by + } + ], + limit: 1 + }, + last_observation: true, + last_price: true, + observation_agg: true, + updated_slot: true + }; + } + + const { query, variables } = generateSubscriptionOp(queryForGenerate); return new Observable((subscriber) => { const subscriptionCleanup = this.graphqlWSClient.subscribe<{ @@ -177,20 +204,38 @@ export class FutarchyIndexerMarketsClient implements FutarchyMarketsClient { }; }; }[]; + twaps: { + last_observation: number; + last_price: number; + observation_agg: number; + updated_slot: number; + }[]; }>( { query, variables }, { - next: (data) => { + next: ({ data }) => { + const twaps = data?.twaps; const twapObservations = - data.data?.twap_chart_data?.map((d) => ({ - priceUi: PriceMath.getHumanPrice( - new BN(d.token_amount), - d.market?.tokenByBaseMintAcct.decimals!!, - d.market?.tokenByQuoteMintAcct.decimals!! - ), - priceRaw: d.token_amount, - createdAt: new Date(d.interv) - })); + data?.twap_chart_data?.map((d, i) => { + const latestTwaps = twaps?.[i]; + return { + priceUi: PriceMath.getHumanPrice( + new BN(d.token_amount), + d.market?.tokenByBaseMintAcct?.decimals!!, + d.market?.tokenByQuoteMintAcct.decimals!! + ), + priceRaw: d.token_amount, + createdAt: new Date(d.interv), + oracleData: latestTwaps + ? { + lastObservation: latestTwaps.last_observation, + lastPrice: latestTwaps.last_price, + observationAgg: latestTwaps.observation_agg, + updatedSlot: latestTwaps.updated_slot + } + : null + }; + }); subscriber.next(twapObservations); }, error: (error) => subscriber.error(error), @@ -203,9 +248,10 @@ export class FutarchyIndexerMarketsClient implements FutarchyMarketsClient { } async fetchCurrentTwapPrice( - marketKey: PublicKey + marketKey: PublicKey, + includeOracleData?: boolean ): Promise { - const { twap_chart_data } = await this.graphqlClient.query({ + const query = { twap_chart_data: { __args: { where: { @@ -213,7 +259,7 @@ export class FutarchyIndexerMarketsClient implements FutarchyMarketsClient { }, order_by: [ { - interv: "desc" + interv: "desc" as order_by } ], limit: 1 @@ -228,19 +274,55 @@ export class FutarchyIndexerMarketsClient implements FutarchyMarketsClient { } }, interv: true - } - }); + }, + twaps: undefined as any + }; - const twapObservations = twap_chart_data?.map((d) => ({ - priceUi: PriceMath.getHumanPrice( - new BN(d.token_amount), - d.market?.tokenByBaseMintAcct?.decimals!!, - d.market?.tokenByQuoteMintAcct.decimals!! - ), - priceRaw: d.token_amount, - createdAt: new Date(d.interv) - })); - return twapObservations; + if (includeOracleData) { + query.twaps = { + __args: { + where: { + market_acct: { _eq: marketKey.toString() } + }, + order_by: [ + { + created_at: "desc" as order_by + } + ], + limit: 1 + }, + last_observation: true, + last_price: true, + observation_agg: true, + updated_slot: true + }; + } + + const { twap_chart_data, twaps } = await this.graphqlClient.query(query); + const latestTwapChartData = twap_chart_data?.[0]; + const latestTwaps = twaps?.[0]; + + if (!latestTwapChartData) return []; + + return [ + { + priceUi: PriceMath.getHumanPrice( + new BN(latestTwapChartData.token_amount), + latestTwapChartData.market?.tokenByBaseMintAcct?.decimals!!, + latestTwapChartData.market?.tokenByQuoteMintAcct.decimals!! + ), + priceRaw: latestTwapChartData.token_amount, + createdAt: new Date(latestTwapChartData.interv), + oracleData: latestTwaps + ? { + lastObservation: latestTwaps.last_observation, + lastPrice: latestTwaps.last_price, + observationAgg: latestTwaps.observation_agg, + updatedSlot: latestTwaps.updated_slot + } + : null + } + ]; } watchTwapPrices(marketKey: PublicKey): Observable { diff --git a/lib/constants/index.ts b/lib/constants/index.ts index d1451a9..02f0447 100644 --- a/lib/constants/index.ts +++ b/lib/constants/index.ts @@ -6,10 +6,10 @@ export * from "./reactions" import { PublicKey } from "@solana/web3.js"; import { BN } from "@coral-xyz/anchor"; import { AutocratProgram, ProgramVersion } from "@/types"; -import AUTOCRAT_V0_IDL from "@/idl/autocrat_v0.json"; -import AUTOCRAT_V0_1_IDL from "@/idl/autocrat_v0.1.json"; -import AUTOCRAT_V0_2_IDL from "@/idl/autocrat_v0.2.json"; -import AUTOCRAT_V0_3_IDL from "@/idl/autocrat_v0.3.json"; +import AUTOCRAT_V0_IDL from "@/idl/autocrat_v0.json" assert {type: "json"}; +import AUTOCRAT_V0_1_IDL from "@/idl/autocrat_v0.1.json" assert {type: "json"}; +import AUTOCRAT_V0_2_IDL from "@/idl/autocrat_v0.2.json" assert {type: "json"}; +import AUTOCRAT_V0_3_IDL from "@/idl/autocrat_v0.3.json" assert {type: "json"}; export const SYSTEM_PROGRAM: PublicKey = new PublicKey( "11111111111111111111111111111111" diff --git a/lib/index.ts b/lib/index.ts index d407032..0151dd5 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -1,5 +1,5 @@ -export * from "./client"; -export * from "./constants"; +export * from "./client/index.js"; +export * from "./constants/index.js"; export * from "./openbookTwap"; export * from "./nonce"; export * from "./transactions/"; diff --git a/lib/types/prices.ts b/lib/types/prices.ts index 0d74248..9a1ff21 100644 --- a/lib/types/prices.ts +++ b/lib/types/prices.ts @@ -1,9 +1,17 @@ export type TwapObservation = { priceRaw?: number | null; priceUi: number | null; + oracleData?: TwapOracleData | null; createdAt: Date; }; +export type TwapOracleData = { + lastObservation: number; + lastPrice: number; + observationAgg: number; + updatedSlot: number; +}; + /** * Quote and Base amounts generally available on market spot prices */ diff --git a/package.json b/package.json index 82e7181..1889e38 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,11 @@ { "name": "@metadaoproject/futarchy-sdk", - "version": "4.0.0-alpha.47", + "version": "4.0.0-alpha.48", + "type": "module", "main": "dist", "scripts": { "preinstall": "npx only-allow pnpm", - "build": "tsc --project tsconfig.build.json && tscpaths -p tsconfig.json -s ./lib -o ./dist", + "build": "tsc --project tsconfig.build.json && tscpaths -p tsconfig.json -s ./lib -o ./dist && tsc-alias -p tsconfig.build.json", "build:tests": "tsc && tscpaths -p tsconfig.json -s ./tests -o ./dist" }, "keywords": [ @@ -36,7 +37,8 @@ "dayjs": "^1.11.11", "graphql-ws": "^5.16.0", "numeral": "^2.0.6", - "rxjs": "^7.8.1" + "rxjs": "^7.8.1", + "tsc-alias": "^1.8.10" }, "devDependencies": { "semantic-release": "^24.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 584c8eb..8a4a0b4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -74,6 +74,9 @@ dependencies: rxjs: specifier: ^7.8.1 version: 7.8.1 + tsc-alias: + specifier: ^1.8.10 + version: 1.8.10 devDependencies: semantic-release: @@ -1430,7 +1433,6 @@ packages: dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: true /@nodelib/fs.stat@1.1.3: resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==} @@ -1440,7 +1442,6 @@ packages: /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: true /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} @@ -1448,7 +1449,6 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - dev: true /@octokit/auth-token@5.1.1: resolution: {integrity: sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==} @@ -2158,6 +2158,14 @@ packages: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: true + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: false + /aptos@1.8.5(debug@4.3.4): resolution: {integrity: sha512-iQxliWesNHjGQ5YYXCyss9eg4+bDGQWqAZa73vprqGQ9tungK0cRjUI2fmnp63Ed6UG6rurHrL+b0ckbZAOZZQ==} engines: {node: '>=11.0.0'} @@ -2267,6 +2275,11 @@ packages: array-uniq: 1.0.3 dev: true + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: false + /array-uniq@1.0.3: resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} engines: {node: '>=0.10.0'} @@ -2426,6 +2439,11 @@ packages: resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} dev: false + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + dev: false + /bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} dependencies: @@ -2522,7 +2540,6 @@ packages: engines: {node: '>=8'} dependencies: fill-range: 7.1.1 - dev: true /brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} @@ -2651,6 +2668,21 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: false + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: false + /cipher-base@1.0.4: resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} dependencies: @@ -2783,6 +2815,11 @@ packages: engines: {node: '>= 12'} dev: false + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + dev: false + /compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} dependencies: @@ -3065,7 +3102,6 @@ packages: engines: {node: '>=8'} dependencies: path-type: 4.0.0 - dev: true /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -3395,7 +3431,6 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.8 - dev: true /fast-stable-stringify@1.0.0: resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} @@ -3409,7 +3444,6 @@ packages: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 - dev: true /figures@2.0.0: resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==} @@ -3451,7 +3485,6 @@ packages: engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - dev: true /find-up-simple@1.0.0: resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} @@ -3526,6 +3559,14 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: false + optional: true + /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} dev: true @@ -3591,7 +3632,6 @@ packages: engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - dev: true /glob-to-regexp@0.3.0: resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==} @@ -3608,6 +3648,18 @@ packages: path-is-absolute: 1.0.1 dev: true + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + dev: false + /globby@14.0.2: resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} engines: {node: '>=18'} @@ -3828,7 +3880,6 @@ packages: /ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - dev: true /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -3916,6 +3967,13 @@ packages: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.3.0 + dev: false + /is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} dev: true @@ -3958,7 +4016,6 @@ packages: /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - dev: true /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} @@ -3976,7 +4033,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: true /is-hex-prefixed@1.0.0: resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} @@ -3998,7 +4054,6 @@ packages: /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: true /is-obj@2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} @@ -4326,7 +4381,6 @@ packages: /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - dev: true /merkletreejs@0.3.11: resolution: {integrity: sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ==} @@ -4370,7 +4424,6 @@ packages: dependencies: braces: 3.0.3 picomatch: 2.3.1 - dev: true /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} @@ -4465,6 +4518,11 @@ packages: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: false + /mylas@2.1.13: + resolution: {integrity: sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==} + engines: {node: '>=12.0.0'} + dev: false + /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: @@ -4586,6 +4644,11 @@ packages: validate-npm-package-license: 3.0.4 dev: true + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: false + /normalize-url@8.0.1: resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} engines: {node: '>=14.16'} @@ -4900,7 +4963,6 @@ packages: /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - dev: true /path-type@5.0.0: resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} @@ -4925,7 +4987,6 @@ packages: /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - dev: true /pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} @@ -4945,6 +5006,13 @@ packages: load-json-file: 4.0.0 dev: true + /plimit-lit@1.6.1: + resolution: {integrity: sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==} + engines: {node: '>=12'} + dependencies: + queue-lit: 1.5.2 + dev: false + /posix-character-classes@0.1.1: resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} engines: {node: '>=0.10.0'} @@ -4974,9 +5042,13 @@ packages: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false + /queue-lit@1.5.2: + resolution: {integrity: sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==} + engines: {node: '>=12'} + dev: false + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -5035,6 +5107,13 @@ packages: util-deprecate: 1.0.2 dev: false + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: false + /regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} dev: false @@ -5105,7 +5184,6 @@ packages: /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true /ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} @@ -5135,7 +5213,6 @@ packages: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - dev: true /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} @@ -5306,6 +5383,11 @@ packages: engines: {node: '>=6'} dev: true + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: false + /slash@5.1.0: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} @@ -5625,7 +5707,6 @@ packages: engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - dev: true /to-regex@3.0.2: resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} @@ -5660,6 +5741,18 @@ packages: engines: {node: '>=0.6'} dev: false + /tsc-alias@1.8.10: + resolution: {integrity: sha512-Ibv4KAWfFkFdKJxnWfVtdOmB0Zi1RJVxcbPGiCDsFpCQSsmpWyuzHG3rQyI5YkobWwxFPEyQfu1hdo4qLG2zPw==} + hasBin: true + dependencies: + chokidar: 3.6.0 + commander: 9.5.0 + globby: 11.1.0 + mylas: 2.1.13 + normalize-path: 3.0.0 + plimit-lit: 1.6.1 + dev: false + /tsconfig-paths@4.2.0: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} diff --git a/tsconfig.json b/tsconfig.json index 81da7a9..b9422a8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,5 +16,9 @@ "paths": { "@/*": ["./lib/*"] } + }, + "tsc-alias": { + "resolveFullPaths": true, + "resolveFullExtension": ".js" } }