diff --git a/packages/react-native-babel-plugin/package.json b/packages/react-native-babel-plugin/package.json new file mode 100644 index 000000000..03dd97662 --- /dev/null +++ b/packages/react-native-babel-plugin/package.json @@ -0,0 +1,67 @@ +{ + "name": "@datadog/mobile-react-native-babel-plugin", + "version": "2.8.0", + "description": "A Babel plugin that enhances Datadog's React Native SDK by automatically enriching React components with contextual metadata.", + "keywords": [ + "babel", + "babel-plugin", + "plugin", + "datadog", + "react-native" + ], + "author": "Datadog (https://github.com/DataDog)", + "homepage": "https://github.com/DataDog/dd-sdk-reactnative#readme", + "repository": "https://github.com/DataDog/dd-sdk-reactnative", + "bugs": { + "url": "https://github.com/DataDog/dd-sdk-reactnative/issues" + }, + "license": "Apache-2.0", + "main": "lib/commonjs/index", + "files": [ + "src/**", + "lib" + ], + "types": "lib/typescript/index.d.ts", + "react-native": "src/index", + "source": "src", + "module": "lib/module/index", + "publishConfig": { + "access": "private" + }, + "scripts": { + "test": "jest", + "lint": "eslint .", + "prepare": "rm -rf lib && yarn bob build" + }, + "peerDependencies": { + "react": ">=16.13.1", + "react-native": ">=0.63.4 <1.0" + }, + "dependencies": { + "@babel/core": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "devDependencies": { + "@babel/cli": "^7.27.2", + "@babel/preset-react": "^7.27.1", + "@babel/preset-typescript": "^7.27.1", + "@babel/types": "^7.27.1", + "react-native-builder-bob": "0.26.0", + "tsc-alias": "^1.8.16", + "typescript": "5.0.4" + }, + "react-native-builder-bob": { + "source": "src", + "output": "lib", + "targets": [ + "commonjs", + "module", + [ + "typescript", + { + "tsc": "./../../node_modules/.bin/tsc" + } + ] + ] + } +} diff --git a/packages/react-native-babel-plugin/src/actions/global/index.ts b/packages/react-native-babel-plugin/src/actions/global/index.ts new file mode 100644 index 000000000..82c3db215 --- /dev/null +++ b/packages/react-native-babel-plugin/src/actions/global/index.ts @@ -0,0 +1,37 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +import type * as Babel from '@babel/core'; + +import { PluginConstants } from '../../constants'; +import type { BabelTypes } from '../../types'; +import { + getAssignmentNode, + insertAtProgramTop, + PluginState +} from '../../utils'; + +export function insertSetupFlag( + path: Babel.NodePath, + t: BabelTypes +) { + const pluginState = PluginState.getInstance(); + // Only set the flag on the entry file of the project + if (pluginState.isInitialized) { + return; + } + + pluginState.isInitialized = true; + + const flagNode = getAssignmentNode( + t, + 'globalThis', + PluginConstants.PLUGIN_ENABLED, + t.booleanLiteral(true) + ); + + insertAtProgramTop(path, flagNode); +} diff --git a/packages/react-native-babel-plugin/src/constants/global.ts b/packages/react-native-babel-plugin/src/constants/global.ts new file mode 100644 index 000000000..777a7c53c --- /dev/null +++ b/packages/react-native-babel-plugin/src/constants/global.ts @@ -0,0 +1,9 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +export const PluginConstants = { + PLUGIN_ENABLED: '__DD_RN_BABEL_PLUGIN_ENABLED__' +} as const; diff --git a/packages/react-native-babel-plugin/src/constants/index.ts b/packages/react-native-babel-plugin/src/constants/index.ts new file mode 100644 index 000000000..99553271c --- /dev/null +++ b/packages/react-native-babel-plugin/src/constants/index.ts @@ -0,0 +1,7 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +export * from './global'; diff --git a/packages/react-native-babel-plugin/src/index.ts b/packages/react-native-babel-plugin/src/index.ts new file mode 100644 index 000000000..c59555c6c --- /dev/null +++ b/packages/react-native-babel-plugin/src/index.ts @@ -0,0 +1,31 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import type * as Babel from '@babel/core'; +import { declare } from '@babel/helper-plugin-utils'; + +import { insertSetupFlag } from './actions/global'; +import type { PluginOptions } from './types'; +import { getFileInfo } from './utils/index'; + +export default declare( + ( + api: typeof Babel & Babel.ConfigAPI, + _options: PluginOptions, + _dirname: string + ): Babel.PluginObj => { + api.assertVersion(7); + + return { + visitor: { + Program(path, _state) { + const { path: _p, name: _name } = getFileInfo(this); + insertSetupFlag(path, api.types); + } + } + }; + } +); diff --git a/packages/react-native-babel-plugin/src/types/general.ts b/packages/react-native-babel-plugin/src/types/general.ts new file mode 100644 index 000000000..10a3de6bc --- /dev/null +++ b/packages/react-native-babel-plugin/src/types/general.ts @@ -0,0 +1,9 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +export type PluginOptions = { + /* empty */ +}; diff --git a/packages/react-native-babel-plugin/src/types/helper-plugin-utils.ts b/packages/react-native-babel-plugin/src/types/helper-plugin-utils.ts new file mode 100644 index 000000000..7da6cc58a --- /dev/null +++ b/packages/react-native-babel-plugin/src/types/helper-plugin-utils.ts @@ -0,0 +1,21 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +declare module '@babel/helper-plugin-utils' { + import type * as Babel from '@babel/core'; + + export function declare( + builder: ( + api: typeof Babel & Babel.ConfigAPI, + options: T, + dirname: string + ) => Babel.PluginObj + ): ( + api: Babel.ConfigAPI, + options: T, + dirname: string + ) => Babel.PluginObj; +} diff --git a/packages/react-native-babel-plugin/src/types/index.ts b/packages/react-native-babel-plugin/src/types/index.ts new file mode 100644 index 000000000..c686971c4 --- /dev/null +++ b/packages/react-native-babel-plugin/src/types/index.ts @@ -0,0 +1,8 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +export * from './general'; +export * from './nodes'; diff --git a/packages/react-native-babel-plugin/src/types/nodes.ts b/packages/react-native-babel-plugin/src/types/nodes.ts new file mode 100644 index 000000000..fdbb51c2f --- /dev/null +++ b/packages/react-native-babel-plugin/src/types/nodes.ts @@ -0,0 +1,19 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +import type * as Babel from '@babel/core'; + +export type BabelTypes = typeof Babel.types; + +export type AssignmentNode = + | Babel.types.Identifier + | Babel.types.StringLiteral + | Babel.types.NumericLiteral + | Babel.types.NullLiteral + | Babel.types.BooleanLiteral + | Babel.types.RegExpLiteral + | Babel.types.ObjectExpression + | Babel.types.ArrayExpression; diff --git a/packages/react-native-babel-plugin/src/utils/PluginState.ts b/packages/react-native-babel-plugin/src/utils/PluginState.ts new file mode 100644 index 000000000..189cfc8d2 --- /dev/null +++ b/packages/react-native-babel-plugin/src/utils/PluginState.ts @@ -0,0 +1,31 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +const PluginStateErrors = { + ALREADY_INITIALIZED: + 'Plugin State already initialized, please use `getInstance`.' +} as const; + +export class PluginState { + static instance: PluginState | null = null; + + isInitialized: boolean = false; + + private constructor() { + if (PluginState.instance) { + throw new Error(PluginStateErrors.ALREADY_INITIALIZED); + } + PluginState.instance = this; + } + + static getInstance() { + if (!PluginState.instance) { + PluginState.instance = new PluginState(); + } + + return PluginState.instance; + } +} diff --git a/packages/react-native-babel-plugin/src/utils/index.ts b/packages/react-native-babel-plugin/src/utils/index.ts new file mode 100644 index 000000000..8a4b01425 --- /dev/null +++ b/packages/react-native-babel-plugin/src/utils/index.ts @@ -0,0 +1,8 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +export * from './nodeProcessing'; +export * from './PluginState'; diff --git a/packages/react-native-babel-plugin/src/utils/nodeProcessing.ts b/packages/react-native-babel-plugin/src/utils/nodeProcessing.ts new file mode 100644 index 000000000..5710f5d86 --- /dev/null +++ b/packages/react-native-babel-plugin/src/utils/nodeProcessing.ts @@ -0,0 +1,53 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2016-Present Datadog, Inc. + */ + +import type * as Babel from '@babel/core'; + +import type { AssignmentNode, BabelTypes } from '../types'; + +export function insertAtProgramTop( + path: Babel.NodePath, + node: Babel.types.Statement | Babel.types.ModuleDeclaration +) { + path.unshiftContainer('body', node); +} + +export function getFileInfo(data: Babel.PluginPass) { + const result: { path: string | null; name: string | null } = { + path: null, + name: null + }; + + if (!data.filename) { + return result; + } + + const pathArray = data.filename.split('/'); + result.name = pathArray.slice(-1)[0]; + result.path = pathArray.slice(0, -1).join('/'); + + return result; +} + +export function getAssignmentNode( + t: BabelTypes, + objectKey: string, + propertyKey: string, + value: AssignmentNode +) { + const node = t.expressionStatement( + t.assignmentExpression( + '=', + t.memberExpression( + t.identifier(objectKey), + t.identifier(propertyKey) + ), + value + ) + ); + + return node; +} diff --git a/packages/react-native-babel-plugin/tsconfig.json b/packages/react-native-babel-plugin/tsconfig.json new file mode 100644 index 000000000..c799e621f --- /dev/null +++ b/packages/react-native-babel-plugin/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig", + "include": ["src", "types"] +} diff --git a/yarn.lock b/yarn.lock index 379b5bb42..409bdecb9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -763,6 +763,33 @@ __metadata: languageName: node linkType: hard +"@babel/cli@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/cli@npm:7.27.2" + dependencies: + "@jridgewell/trace-mapping": ^0.3.25 + "@nicolo-ribaudo/chokidar-2": 2.1.8-no-fsevents.3 + chokidar: ^3.6.0 + commander: ^6.2.0 + convert-source-map: ^2.0.0 + fs-readdir-recursive: ^1.1.0 + glob: ^7.2.0 + make-dir: ^2.1.0 + slash: ^2.0.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + dependenciesMeta: + "@nicolo-ribaudo/chokidar-2": + optional: true + chokidar: + optional: true + bin: + babel: ./bin/babel.js + babel-external-helpers: ./bin/babel-external-helpers.js + checksum: 4444abef9801e23b6161a22f0f9de867271021ec7f32fd4f9957dee7b9f427377a36783276ded5e831e611ee75804fd78b23df5c64053e845486514f9ff5911e + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.24.7, @babel/code-frame@npm:^7.27.1": version: 7.27.1 resolution: "@babel/code-frame@npm:7.27.1" @@ -804,6 +831,29 @@ __metadata: languageName: node linkType: hard +"@babel/core@npm:^7.27.1": + version: 7.27.3 + resolution: "@babel/core@npm:7.27.3" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.27.1 + "@babel/generator": ^7.27.3 + "@babel/helper-compilation-targets": ^7.27.2 + "@babel/helper-module-transforms": ^7.27.3 + "@babel/helpers": ^7.27.3 + "@babel/parser": ^7.27.3 + "@babel/template": ^7.27.2 + "@babel/traverse": ^7.27.3 + "@babel/types": ^7.27.3 + convert-source-map: ^2.0.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.3 + semver: ^6.3.1 + checksum: d70d5e4e99d87d07e9dd51ef20f6558e2145562c6bab9db4b26a9d1ca3fe96db87f3b0385d85df6e6582faf623e4bec4150a417095fdb598956dbd8608cd6270 + languageName: node + linkType: hard + "@babel/eslint-parser@npm:^7.25.1": version: 7.27.1 resolution: "@babel/eslint-parser@npm:7.27.1" @@ -831,6 +881,19 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.27.3": + version: 7.27.3 + resolution: "@babel/generator@npm:7.27.3" + dependencies: + "@babel/parser": ^7.27.3 + "@babel/types": ^7.27.3 + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 + jsesc: ^3.0.2 + checksum: c0b1b399ff62fa0f1903679ab2b088fd4312c33154c0ae78228094c196ecf53ce8e525b8f5e537ac3117ff9a49cdf7b3640f129114908dfadc6541853f3747a2 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-annotate-as-pure@npm:7.27.1" @@ -931,6 +994,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.27.3": + version: 7.27.3 + resolution: "@babel/helper-module-transforms@npm:7.27.3" + dependencies: + "@babel/helper-module-imports": ^7.27.1 + "@babel/helper-validator-identifier": ^7.27.1 + "@babel/traverse": ^7.27.3 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: c611d42d3cb7ba23b1a864fcf8d6cde0dc99e876ca1c9a67e4d7919a70706ded4aaa45420de2bf7f7ea171e078e59f0edcfa15a56d74b9485e151b95b93b946e + languageName: node + linkType: hard + "@babel/helper-optimise-call-expression@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-optimise-call-expression@npm:7.27.1" @@ -1025,6 +1101,16 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.27.3": + version: 7.27.3 + resolution: "@babel/helpers@npm:7.27.3" + dependencies: + "@babel/template": ^7.27.2 + "@babel/types": ^7.27.3 + checksum: c572acf07cb4248a67eca76c9bfa6d4f120594e0c73ae6b014159509583981a519935f8997f611896272a1d38dc46dbb8e81f645ab52ad82da78a930b2dd4e8c + languageName: node + linkType: hard + "@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.27.1, @babel/parser@npm:^7.27.2": version: 7.27.2 resolution: "@babel/parser@npm:7.27.2" @@ -1036,6 +1122,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.27.3": + version: 7.27.3 + resolution: "@babel/parser@npm:7.27.3" + dependencies: + "@babel/types": ^7.27.3 + bin: + parser: ./bin/babel-parser.js + checksum: aef2cfd154e47a639615d173d3f05a8ce8007fcc5a0ade013c953adee71a8bc19465a147e060cc67388fd748b62a3b42bf3b5cc3e83d4f8add526b3b722e2231 + languageName: node + linkType: hard + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.27.1" @@ -2201,7 +2298,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-react@npm:^7.17.12": +"@babel/preset-react@npm:^7.17.12, @babel/preset-react@npm:^7.27.1": version: 7.27.1 resolution: "@babel/preset-react@npm:7.27.1" dependencies: @@ -2217,7 +2314,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.17.12": +"@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.17.12, @babel/preset-typescript@npm:^7.27.1": version: 7.27.1 resolution: "@babel/preset-typescript@npm:7.27.1" dependencies: @@ -2254,7 +2351,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.25.0, @babel/template@npm:^7.27.1, @babel/template@npm:^7.3.3": +"@babel/template@npm:^7.25.0, @babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2, @babel/template@npm:^7.3.3": version: 7.27.2 resolution: "@babel/template@npm:7.27.2" dependencies: @@ -2280,6 +2377,21 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.27.3": + version: 7.27.3 + resolution: "@babel/traverse@npm:7.27.3" + dependencies: + "@babel/code-frame": ^7.27.1 + "@babel/generator": ^7.27.3 + "@babel/parser": ^7.27.3 + "@babel/template": ^7.27.2 + "@babel/types": ^7.27.3 + debug: ^4.3.1 + globals: ^11.1.0 + checksum: 914402382921b796b740f7c90d56ba130ffd5eeda8d18dc82f1243a1a510ff21a26d5b713df08c8e8aad2ffc969ce4624cee309406d69bcee8efa350483688c9 + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.2, @babel/types@npm:^7.27.1, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": version: 7.27.1 resolution: "@babel/types@npm:7.27.1" @@ -2290,6 +2402,16 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.27.3": + version: 7.27.3 + resolution: "@babel/types@npm:7.27.3" + dependencies: + "@babel/helper-string-parser": ^7.27.1 + "@babel/helper-validator-identifier": ^7.27.1 + checksum: f0d43c0231f3ebc118480e149292dcd92ea128e2650285ced99ff2e5610db2171305f59aa07406ba0cb36af8e4331a53a69576d6b0c3f3176144dd3ad514b9ae + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -2377,6 +2499,25 @@ __metadata: languageName: unknown linkType: soft +"@datadog/mobile-react-native-babel-plugin@workspace:packages/react-native-babel-plugin": + version: 0.0.0-use.local + resolution: "@datadog/mobile-react-native-babel-plugin@workspace:packages/react-native-babel-plugin" + dependencies: + "@babel/cli": ^7.27.2 + "@babel/core": ^7.27.1 + "@babel/helper-plugin-utils": ^7.27.1 + "@babel/preset-react": ^7.27.1 + "@babel/preset-typescript": ^7.27.1 + "@babel/types": ^7.27.1 + react-native-builder-bob: 0.26.0 + tsc-alias: ^1.8.16 + typescript: 5.0.4 + peerDependencies: + react: ">=16.13.1" + react-native: ">=0.63.4 <1.0" + languageName: unknown + linkType: soft + "@datadog/mobile-react-native-code-push@workspace:packages/codepush": version: 0.0.0-use.local resolution: "@datadog/mobile-react-native-code-push@workspace:packages/codepush" @@ -3257,6 +3398,13 @@ __metadata: languageName: node linkType: hard +"@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3": + version: 2.1.8-no-fsevents.3 + resolution: "@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3" + checksum: ee55cc9241aeea7eb94b8a8551bfa4246c56c53bc71ecda0a2104018fcc328ba5723b33686bdf9cc65d4df4ae65e8016b89e0bbdeb94e0309fe91bb9ced42344 + languageName: node + linkType: hard + "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1": version: 5.1.1-v1 resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" @@ -6291,7 +6439,7 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:^3.0.3": +"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": version: 3.1.3 resolution: "anymatch@npm:3.1.3" dependencies: @@ -6821,6 +6969,13 @@ __metadata: languageName: node linkType: hard +"binary-extensions@npm:^2.0.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: bcad01494e8a9283abf18c1b967af65ee79b0c6a9e6fcfafebfe91dbe6e0fc7272bafb73389e198b310516ae04f7ad17d79aacf6cb4c0d5d5202a7e2e52c7d98 + languageName: node + linkType: hard + "bl@npm:^4.0.3, bl@npm:^4.1.0": version: 4.1.0 resolution: "bl@npm:4.1.0" @@ -6883,7 +7038,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.3": +"braces@npm:^3.0.3, braces@npm:~3.0.2": version: 3.0.3 resolution: "braces@npm:3.0.3" dependencies: @@ -7147,6 +7302,25 @@ __metadata: languageName: node linkType: hard +"chokidar@npm:^3.5.3, chokidar@npm:^3.6.0": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: ~3.1.2 + braces: ~3.0.2 + fsevents: ~2.3.2 + glob-parent: ~5.1.2 + is-binary-path: ~2.1.0 + is-glob: ~4.0.1 + normalize-path: ~3.0.0 + readdirp: ~3.6.0 + dependenciesMeta: + fsevents: + optional: true + checksum: d2f29f499705dcd4f6f3bbed79a9ce2388cf530460122eed3b9c48efeab7a4e28739c6551fd15bec9245c6b9eeca7a32baa64694d64d9b6faeb74ddb8c4a413d + languageName: node + linkType: hard + "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -7469,6 +7643,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^6.2.0": + version: 6.2.1 + resolution: "commander@npm:6.2.1" + checksum: d7090410c0de6bc5c67d3ca41c41760d6d268f3c799e530aafb73b7437d1826bbf0d2a3edac33f8b57cc9887b4a986dce307fa5557e109be40eadb7c43b21742 + languageName: node + linkType: hard + "commander@npm:^7.2.0": version: 7.2.0 resolution: "commander@npm:7.2.0" @@ -7476,7 +7657,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^9.4.1": +"commander@npm:^9.0.0, commander@npm:^9.4.1": version: 9.5.0 resolution: "commander@npm:9.5.0" checksum: c7a3e27aa59e913b54a1bafd366b88650bc41d6651f0cbe258d4ff09d43d6a7394232a4dadd0bf518b3e696fdf595db1028a0d82c785b88bd61f8a440cecfade @@ -9774,6 +9955,13 @@ __metadata: languageName: node linkType: hard +"fs-readdir-recursive@npm:^1.1.0": + version: 1.1.0 + resolution: "fs-readdir-recursive@npm:1.1.0" + checksum: 29d50f3d2128391c7fc9fd051c8b7ea45bcc8aa84daf31ef52b17218e20bfd2bd34d02382742801954cc8d1905832b68227f6b680a666ce525d8b6b75068ad1e + languageName: node + linkType: hard + "fs.realpath@npm:^1.0.0": version: 1.0.0 resolution: "fs.realpath@npm:1.0.0" @@ -9781,7 +9969,7 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^2.3.2": +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": version: 2.3.3 resolution: "fsevents@npm:2.3.3" dependencies: @@ -9791,7 +9979,7 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@^2.3.2#~builtin": +"fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin": version: 2.3.3 resolution: "fsevents@patch:fsevents@npm%3A2.3.3#~builtin::version=2.3.3&hash=df0bf1" dependencies: @@ -9982,6 +10170,15 @@ __metadata: languageName: node linkType: hard +"get-tsconfig@npm:^4.10.0": + version: 4.10.1 + resolution: "get-tsconfig@npm:4.10.1" + dependencies: + resolve-pkg-maps: ^1.0.0 + checksum: 22925debda6bd0992171a44ee79a22c32642063ba79534372c4d744e0c9154abe2c031659da0fb86bc9e73fc56a3b76b053ea5d24ca3ac3da43d2e6f7d1c3c33 + languageName: node + linkType: hard + "get-uri@npm:^6.0.1": version: 6.0.4 resolution: "get-uri@npm:6.0.4" @@ -10074,7 +10271,7 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^5.1.2": +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: @@ -10099,7 +10296,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.1.7": +"glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.1.7, glob@npm:^7.2.0": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -10178,7 +10375,7 @@ __metadata: languageName: node linkType: hard -"globby@npm:11.1.0, globby@npm:^11.0.1, globby@npm:^11.1.0": +"globby@npm:11.1.0, globby@npm:^11.0.1, globby@npm:^11.0.4, globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" dependencies: @@ -10840,6 +11037,15 @@ __metadata: languageName: node linkType: hard +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: ^2.0.0 + checksum: 84192eb88cff70d320426f35ecd63c3d6d495da9d805b19bc65b518984b7c0760280e57dbf119b7e9be6b161784a5a673ab2c6abe83abb5198a432232ad5b35c + languageName: node + linkType: hard + "is-boolean-object@npm:^1.2.1": version: 1.2.2 resolution: "is-boolean-object@npm:1.2.2" @@ -10983,7 +11189,7 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -13365,6 +13571,13 @@ __metadata: languageName: node linkType: hard +"mylas@npm:^2.1.9": + version: 2.1.13 + resolution: "mylas@npm:2.1.13" + checksum: f861d092137a9ac268cba88042392a5dc2a290eed5c8543954eae849d85e5961332211161d2c08c3644ad893f20dbe9de89b07f5dc027f1f92f13f2d38f4b81f + languageName: node + linkType: hard + "nan@npm:^2.19.0, nan@npm:^2.20.0": version: 2.22.2 resolution: "nan@npm:2.22.2" @@ -13639,7 +13852,7 @@ __metadata: languageName: node linkType: hard -"normalize-path@npm:^3.0.0": +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" checksum: 88eeb4da891e10b1318c4b2476b6e2ecbeb5ff97d946815ffea7794c31a89017c70d7f34b3c2ebf23ef4e9fc9fb99f7dffe36da22011b5b5c6ffa34f4873ec20 @@ -14493,7 +14706,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf @@ -14569,6 +14782,15 @@ __metadata: languageName: node linkType: hard +"plimit-lit@npm:^1.2.6": + version: 1.6.1 + resolution: "plimit-lit@npm:1.6.1" + dependencies: + queue-lit: ^1.5.1 + checksum: 5f18f1ea7254832bdc663c303420c804b5bc8070c670c88161171f0ebacaf46ce7ca12147ddf52bc22d927bb37bfbac6ed6fa478c93cb4be16b62c5fad16dd5f + languageName: node + linkType: hard + "plist@npm:^3.0.4, plist@npm:^3.0.5": version: 3.1.0 resolution: "plist@npm:3.1.0" @@ -14918,6 +15140,13 @@ __metadata: languageName: node linkType: hard +"queue-lit@npm:^1.5.1": + version: 1.5.2 + resolution: "queue-lit@npm:1.5.2" + checksum: 8dd45c79bd25b33b0c7d587391eb0b4acc4deb797bf92fef62b2d8e7c03b64083f5304f09d52a18267d34d020cc67ccde97a88185b67590eeccb194938ff1f98 + languageName: node + linkType: hard + "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -15414,6 +15643,15 @@ __metadata: languageName: node linkType: hard +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: ^2.2.1 + checksum: 1ced032e6e45670b6d7352d71d21ce7edf7b9b928494dcaba6f11fba63180d9da6cd7061ebc34175ffda6ff529f481818c962952004d273178acd70f7059b320 + languageName: node + linkType: hard + "readline@npm:^1.3.0": version: 1.3.0 resolution: "readline@npm:1.3.0" @@ -15634,6 +15872,13 @@ __metadata: languageName: node linkType: hard +"resolve-pkg-maps@npm:^1.0.0": + version: 1.0.0 + resolution: "resolve-pkg-maps@npm:1.0.0" + checksum: 1012afc566b3fdb190a6309cc37ef3b2dcc35dff5fa6683a9d00cd25c3247edfbc4691b91078c97adc82a29b77a2660c30d791d65dab4fc78bfc473f60289977 + languageName: node + linkType: hard + "resolve.exports@npm:^2.0.0": version: 2.0.3 resolution: "resolve.exports@npm:2.0.3" @@ -17118,6 +17363,23 @@ __metadata: languageName: node linkType: hard +"tsc-alias@npm:^1.8.16": + version: 1.8.16 + resolution: "tsc-alias@npm:1.8.16" + dependencies: + chokidar: ^3.5.3 + commander: ^9.0.0 + get-tsconfig: ^4.10.0 + globby: ^11.0.4 + mylas: ^2.1.9 + normalize-path: ^3.0.0 + plimit-lit: ^1.2.6 + bin: + tsc-alias: dist/bin/index.js + checksum: 7bae356371fbd110768d0865d6740f670128f192a409901b698ea4d6787bb942282148faed4bb753c420cb94df016ac0d9da63b8bb28d7c83fcf83d658150616 + languageName: node + linkType: hard + "tsconfig-paths@npm:^3.15.0": version: 3.15.0 resolution: "tsconfig-paths@npm:3.15.0"