-
Notifications
You must be signed in to change notification settings - Fork 5.5k
Reusing tsconfig file across components #17983
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎ |
WalkthroughAdds a new shared tsconfig.components.json, updates many component tsconfig.json files to extend it (removing inline compilerOptions and per-project include/exclude), and bumps devDependency TypeScript range in package.json to ">=5.5.0 <5.7.0". Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
✨ Finishing Touches🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 6
♻️ Duplicate comments (31)
components/google_recaptcha/tsconfig.json (1)
2-14
: Same observations asclientary
config – path verification and optionalrootDir
apply here as well.components/persistiq/tsconfig.json (1)
2-14
: Mirrors previous configs – please see earlier comment regardingrootDir
.components/currencyscoop/tsconfig.json (1)
12-14
: Optional: co-locaterootDir
withoutDir
– seeclientary
comment for rationale.components/formatting/tsconfig.json (1)
12-14
: OptionalrootDir
addition – same as earlier components.components/expensify/tsconfig.json (1)
2-14
: Same concern as noted forxperiencify
– please verifyextends
pathcomponents/concord/tsconfig.json (1)
2-14
: Same concern as noted forxperiencify
– please verifyextends
pathcomponents/mailboxvalidator/tsconfig.json (1)
2-14
: Same concern as noted forxperiencify
– please verifyextends
pathcomponents/niftyimages/tsconfig.json (1)
2-14
: Same concern as noted forxperiencify
– please verifyextends
pathcomponents/reversecontact/tsconfig.json (1)
2-14
: Same composite-flag concern as noted forbuy_me_a_coffee
The comment on the first component applies here as well; please verify the shared config still defines
"composite": true
(and any other removed options).components/rss/tsconfig.json (1)
2-15
: Same composite-flag concern as noted forbuy_me_a_coffee
The comment on the first component applies here as well; please verify the shared config still defines
"composite": true
(and any other removed options).components/lob/tsconfig.json (1)
2-14
: Same composite-flag concern as noted forbuy_me_a_coffee
The comment on the first component applies here as well; please verify the shared config still defines
"composite": true
(and any other removed options).components/mattermost/tsconfig.json (1)
2-14
: Same composite-flag concern as noted forbuy_me_a_coffee
The comment on the first component applies here as well; please verify the shared config still defines
"composite": true
(and any other removed options).components/shipcloud/tsconfig.json (1)
2-14
: Same considerations as other componentsRelative
extends
path andexclude
vsoutDir
consistency apply here as well. If the earlier feedback is acknowledged, no further changes are required.components/kanbanflow/tsconfig.json (1)
2-14
: Same considerations as other componentsRelative
extends
path correctness and folder naming consistency betweenexclude
andoutDir
.components/data_axle_platform/tsconfig.json (1)
2-14
: Same considerations as other componentsEnsure the base config path is resolvable and folder names are consistent.
components/repuso/tsconfig.json (1)
9-11
: Samenode_modules
exclusion note applies here
See comment oncomponents/lemon_squeezy/tsconfig.json
.components/salesmate/tsconfig.json (1)
9-11
: Samenode_modules
exclusion note applies here
See comment oncomponents/lemon_squeezy/tsconfig.json
.components/rise/tsconfig.json (1)
9-11
: Samenode_modules
exclusion note applies here
See comment oncomponents/lemon_squeezy/tsconfig.json
.components/namely/tsconfig.json (1)
9-11
: Samenode_modules
exclusion note applies here
See comment oncomponents/lemon_squeezy/tsconfig.json
.components/mailbluster/tsconfig.json (1)
2-15
: Same verification / DRY concern applies.
No additional issues unique to this file.components/neverbounce/tsconfig.json (1)
2-15
: Same verification / DRY concern applies.
No additional issues unique to this file.components/pikaso/tsconfig.json (1)
2-15
: Same verification / DRY concern applies.
No additional issues unique to this file.components/coassemble/tsconfig.json (1)
2-15
: Same verification / DRY concern applies.
No additional issues unique to this file.components/waitwhile/tsconfig.json (1)
12-14
: Duplicate: outDir vs exclude path style
See earlier comment oncomponents/practitest/tsconfig.json
about harmonising"./dist"
→"dist"
for consistency.components/amplenote/tsconfig.json (1)
12-14
: Duplicate: outDir vs exclude path style
Refer to the first comment incomponents/practitest/tsconfig.json
.components/tolstoy/tsconfig.json (1)
12-14
: Duplicate: outDir vs exclude path style
Refer to the first comment incomponents/practitest/tsconfig.json
.components/twitter/tsconfig.json (1)
12-14
: Duplicate: outDir vs exclude path style
Refer to the first comment incomponents/practitest/tsconfig.json
.components/tookan/tsconfig.json (1)
2-14
: Same comment as above – configuration correctly extends the shared base; please make sure the path resolves (see verification script in the first comment).components/workast/tsconfig.json (1)
2-14
: Same as earlier components – looks good; path-resolution verification applies.components/beehiiv/tsconfig.json (1)
2-14
: Standardised config adopted – no issues spotted; refer to the first comment for the path-check script.components/ninox/tsconfig.json (1)
2-14
: Config simplification approved – inherits from the shared base; same path-verification note applies.
🧹 Nitpick comments (8)
tsconfig.components.json (1)
6-8
: Minor: normalise casing of"module"
valueTypeScript accepts
"ES2020"
, but the convention in the repo (and TS docs) is the lowercase form"es2020"
.
Using the canonical value avoids diff-noise in downstream tooling.components/clientary/tsconfig.json (1)
12-14
: Consider pinningrootDir
alongsideoutDir
for cleaner composite builds
Withcomposite
enabled in the shared config, TypeScript derivesrootDir
automatically. If any file resides outside the implicit root, TSC will fail. Explicitly setting it avoids surprises:"compilerOptions": { "outDir": "./dist" + ,"rootDir": "." }
components/smtp2go/tsconfig.json (1)
2-14
: Nit: exclude the entire dist tree
"exclude": ["dist"]
is sufficient, but to be explicit you could use"dist/**/*"
which avoids TypeScript rescanning if a nested folder is created insidedist
.- "exclude": [ - "dist" - ], + "exclude": [ + "dist/**/*" + ],components/docupilot/tsconfig.json (1)
12-14
: Redundant"exclude": ["dist"]
?
If the base config already excludesdist
, this local exclusion is unnecessary and can be removed for further brevity.components/quickemailverification/tsconfig.json (1)
12-14
: Consider aligningoutDir
spelling across components
Some components use"dist"
, others"./dist"
. Both resolve the same but the mixed style adds diff noise later.components/practitest/tsconfig.json (1)
12-14
: AlignoutDir
value withexclude
entry for consistencyThe
exclude
array lists"dist"
(without./
), butcompilerOptions.outDir
uses"./dist"
. Both paths resolve the same, yet the visual mismatch invites accidental divergence in future edits.- "outDir": "./dist" + "outDir": "dist"components/dialpad/tsconfig.json (1)
2-14
: Redundant per-componentinclude
/exclude
&outDir
—consider pushing to the shared baseThe three component configs added in this PR are identical except for their path. If every component ultimately wants:
"include": ["app","actions","sources","common"], "exclude": ["dist"], "compilerOptions": { "outDir": "./dist" }
move those keys into
tsconfig.components.json
.
Local files can then be trimmed down to just:{ "extends": "../../tsconfig.components.json" }reducing maintenance overhead and merge conflicts.
components/smaily/tsconfig.json (1)
2-14
: Minor nit: trailing comma after last item inexclude
arrayJSON doesn’t allow trailing commas; some editors strip them automatically, but others will keep them and
tsc
will fail. Ensure the comma after"dist"
is removed (line 11).- "exclude": [ - "dist" - ], + "exclude": [ + "dist" + ]
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (63)
components/amplenote/tsconfig.json
(1 hunks)components/apitemplate_io/tsconfig.json
(1 hunks)components/baserow/tsconfig.json
(1 hunks)components/beehiiv/tsconfig.json
(1 hunks)components/buy_me_a_coffee/tsconfig.json
(1 hunks)components/clientary/tsconfig.json
(1 hunks)components/cloudmersive/tsconfig.json
(1 hunks)components/coassemble/tsconfig.json
(1 hunks)components/concord/tsconfig.json
(1 hunks)components/currencyscoop/tsconfig.json
(1 hunks)components/data_axle_platform/tsconfig.json
(1 hunks)components/detrack/tsconfig.json
(1 hunks)components/dialpad/tsconfig.json
(1 hunks)components/docupilot/tsconfig.json
(1 hunks)components/expensify/tsconfig.json
(1 hunks)components/formatting/tsconfig.json
(1 hunks)components/google_my_business/tsconfig.json
(1 hunks)components/google_recaptcha/tsconfig.json
(1 hunks)components/google_workspace/tsconfig.json
(1 hunks)components/infusionsoft/tsconfig.json
(1 hunks)components/kanbanflow/tsconfig.json
(1 hunks)components/lemon_squeezy/tsconfig.json
(1 hunks)components/lob/tsconfig.json
(1 hunks)components/mailbluster/tsconfig.json
(1 hunks)components/mailboxvalidator/tsconfig.json
(1 hunks)components/mattermost/tsconfig.json
(1 hunks)components/mediatoolkit/tsconfig.json
(1 hunks)components/namely/tsconfig.json
(1 hunks)components/nectar_crm/tsconfig.json
(1 hunks)components/neverbounce/tsconfig.json
(1 hunks)components/niftyimages/tsconfig.json
(1 hunks)components/ninox/tsconfig.json
(1 hunks)components/onfleet/tsconfig.json
(1 hunks)components/persistiq/tsconfig.json
(1 hunks)components/pikaso/tsconfig.json
(1 hunks)components/practitest/tsconfig.json
(1 hunks)components/profitwell/tsconfig.json
(1 hunks)components/quickemailverification/tsconfig.json
(1 hunks)components/raven_tools/tsconfig.json
(1 hunks)components/repuso/tsconfig.json
(1 hunks)components/resend/tsconfig.json
(1 hunks)components/reversecontact/tsconfig.json
(1 hunks)components/rise/tsconfig.json
(1 hunks)components/rss/tsconfig.json
(1 hunks)components/salesmate/tsconfig.json
(1 hunks)components/serveravatar/tsconfig.json
(1 hunks)components/shipcloud/tsconfig.json
(1 hunks)components/smaily/tsconfig.json
(1 hunks)components/smtp2go/tsconfig.json
(1 hunks)components/team_up/tsconfig.json
(1 hunks)components/tolstoy/tsconfig.json
(1 hunks)components/tookan/tsconfig.json
(1 hunks)components/twitch_developer_app/tsconfig.json
(1 hunks)components/twitter/tsconfig.json
(1 hunks)components/verdict_as_a_service/tsconfig.json
(1 hunks)components/waitwhile/tsconfig.json
(1 hunks)components/wildberries/tsconfig.json
(1 hunks)components/workast/tsconfig.json
(1 hunks)components/xperiencify/tsconfig.json
(1 hunks)components/yelp/tsconfig.json
(1 hunks)components/zoho_assist/tsconfig.json
(1 hunks)components/zoho_catalyst/tsconfig.json
(1 hunks)tsconfig.components.json
(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2024-10-31T23:57:17.282Z
Learnt from: jverce
PR: PipedreamHQ/pipedream#14106
File: packages/sdk/src/server/__tests__/server.test.ts:174-192
Timestamp: 2024-10-31T23:57:17.282Z
Learning: In `packages/sdk/src/server/__tests__/server.test.ts`, when `ts-ignore` annotations are used in mock implementations, they are acceptable, and replacing them with type casting or mock types is unnecessary.
Applied to files:
components/formatting/tsconfig.json
components/baserow/tsconfig.json
components/clientary/tsconfig.json
components/onfleet/tsconfig.json
components/data_axle_platform/tsconfig.json
components/persistiq/tsconfig.json
components/google_workspace/tsconfig.json
components/mailboxvalidator/tsconfig.json
components/mattermost/tsconfig.json
components/smtp2go/tsconfig.json
components/raven_tools/tsconfig.json
components/docupilot/tsconfig.json
components/cloudmersive/tsconfig.json
components/rss/tsconfig.json
components/apitemplate_io/tsconfig.json
components/buy_me_a_coffee/tsconfig.json
components/shipcloud/tsconfig.json
components/waitwhile/tsconfig.json
components/neverbounce/tsconfig.json
components/namely/tsconfig.json
components/infusionsoft/tsconfig.json
components/google_my_business/tsconfig.json
components/coassemble/tsconfig.json
components/serveravatar/tsconfig.json
components/tookan/tsconfig.json
components/nectar_crm/tsconfig.json
components/pikaso/tsconfig.json
components/repuso/tsconfig.json
components/amplenote/tsconfig.json
components/twitch_developer_app/tsconfig.json
components/workast/tsconfig.json
components/resend/tsconfig.json
components/lemon_squeezy/tsconfig.json
components/yelp/tsconfig.json
components/quickemailverification/tsconfig.json
components/verdict_as_a_service/tsconfig.json
components/expensify/tsconfig.json
components/mediatoolkit/tsconfig.json
components/wildberries/tsconfig.json
components/detrack/tsconfig.json
components/xperiencify/tsconfig.json
components/tolstoy/tsconfig.json
components/practitest/tsconfig.json
components/dialpad/tsconfig.json
components/google_recaptcha/tsconfig.json
components/kanbanflow/tsconfig.json
components/zoho_assist/tsconfig.json
components/rise/tsconfig.json
components/team_up/tsconfig.json
components/beehiiv/tsconfig.json
components/salesmate/tsconfig.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
- GitHub Check: Publish TypeScript components
- GitHub Check: Verify TypeScript components
- GitHub Check: Lint Code Base
🔇 Additional comments (29)
components/raven_tools/tsconfig.json (1)
2-15
: Config simplification looks goodExtending the shared base config and keeping only local overrides is spot-on and keeps the per-component file minimal.
No further issues noticed here.
components/baserow/tsconfig.json (1)
2-15
: LGTM – consistent with new shared configThe file correctly extends the base config and overrides only
outDir
. Nothing else to flag.components/verdict_as_a_service/tsconfig.json (1)
2-15
: Looks goodConforms to the new pattern; no issues detected.
components/yelp/tsconfig.json (1)
2-15
: Good consolidationFile cleanly extends the shared config with the expected local overrides.
components/clientary/tsconfig.json (1)
2-2
:extends
path looks correct – just confirm the base config is committed
../../tsconfig.components.json
resolves two directories up, which is the repository root when insidecomponents/<name>
. Make sure the new base config is present in the root of the PR so CI doesn’t break.components/currencyscoop/tsconfig.json (1)
3-8
: Verify that every folder ininclude
actually exists
"common"
was added. If the component doesn’t ship acommon/
directory,tsc --build
will throw an error in CI.components/formatting/tsconfig.json (1)
3-8
: Folder list grew – double-check existence
common/
was added; confirm it’s present or remove it to avoid needless glob expansion / build errors.components/xperiencify/tsconfig.json (1)
2-14
: All component tsconfig extends paths are correct
Verified thattsconfig.components.json
exists at the repository root and that every component-leveltsconfig.json
(e.g.components/xperiencify/tsconfig.json
) uses the exact same"extends": "../../tsconfig.components.json"
path. No discrepancies found.components/zoho_assist/tsconfig.json (1)
2-14
: All critical compiler flags are present in tsconfig.components.json–
composite
: true
–target
: ES2020
–moduleResolution
: node
–allowJs
: trueNo further changes needed here.
components/zoho_catalyst/tsconfig.json (1)
2-14
: Config consolidation looks goodThe file correctly inherits the shared settings and only overrides
outDir
, which keeps local noise to a minimum.
Nothing else to flag here.components/apitemplate_io/tsconfig.json (1)
2-14
: LGTM – aligns with the new shared config patternNo issues spotted; the config is minimal and consistent with the other components.
components/detrack/tsconfig.json (1)
2-14
: Verify relativeextends
path and keepexclude
/outDir
consistentLooks good overall.
Just double-check that:
../../tsconfig.components.json
actually resolves fromcomponents/detrack/
, otherwise the compiler will silently fall back to the default config.exclude: ["dist"]
matches the literal folder produced byoutDir: "./dist"
. This is purely cosmetic (tsc
normalises both), but using either both with or both without the leading./
avoids future confusion.No further action if both checks pass.
components/infusionsoft/tsconfig.json (1)
2-15
: Confirm the new"common"
include and path resolutionThe only functional change beyond centralising the config is adding
"common"
to theinclude
list. Please verify acomponents/infusionsoft/common/
directory actually exists; otherwisetsc --build
will emit an error in composite mode inherited from the base config.Everything else mirrors the pattern introduced in the other components.
components/lemon_squeezy/tsconfig.json (1)
2-2
: Centralizing compiler options looks goodRe-using
../../tsconfig.components.json
keeps individual configs lean and easier to maintain.components/twitch_developer_app/tsconfig.json (2)
2-2
: Shared config adoption looks good
Extending../../tsconfig.components.json
eliminates local duplication and keeps the component config concise.
12-14
: No conflicting outDir in base config
I confirmed thattsconfig.components.json
doesn’t specify anoutDir
. This file’soutDir: "./dist"
is the only one in your config chain, so there’s no silent override risk. Leave it as-is.components/profitwell/tsconfig.json (2)
2-2
: Consistent centralisation of compiler options
The change mirrors others in the PR and keeps this component aligned with the new shared setup.
3-14
: No action needed:common
directory exists
Thecomponents/profitwell/common
folder is present, so including"common"
in thetsconfig.json
include
array is correct.components/docupilot/tsconfig.json (1)
2-2
: Config now cleanly inherits from the base – nice!
Less noise, same behaviour.components/quickemailverification/tsconfig.json (1)
2-2
: Good move to the shared tsconfig
Keeps things DRY across components.components/onfleet/tsconfig.json (2)
2-2
: Inheritance path is correct
Path resolution (../../
) correctly reaches repo root fromcomponents/onfleet
.
3-8
: Added"common"
to include – ensure no duplicate compilation
If files undercommon/
are already compiled in another project reference, they could be emitted twice. Confirm your build graph (especially when usingtsc -b
) doesn’t double-compile this folder.components/cloudmersive/tsconfig.json (1)
2-14
: Config correctly consolidated into shared base – looks good
The file now cleanly delegates common options to../../tsconfig.components.json
, keeps only the localinclude
/exclude
lists andoutDir
, and the relative path resolves correctly (two levels up fromcomponents/<name>
). No issues spotted.components/google_my_business/tsconfig.json (1)
2-14
: Consistent with new shared-config pattern – no concerns
Same observations as forcloudmersive
: correct relative path, sensible minimal overrides, and thedist
folder excluded.components/google_workspace/tsconfig.json (1)
2-14
: Shared base config applied correctly
Everything aligns with the repo-wide refactor; nothing further to address here.components/serveravatar/tsconfig.json (1)
2-14
: Good adoption of centralizedtsconfig.components.json
Local overrides limited to what’s strictly necessary; paths and lists are correct.components/wildberries/tsconfig.json (1)
2-14
: LGTM – configuration successfully simplified
Matches the new convention; no functional or stylistic issues detected.components/nectar_crm/tsconfig.json (2)
2-14
: Good use of a shared base config
Extending../../tsconfig.components.json
and trimming local compiler options massively reduces duplication and makes future maintenance easier. The local overrides (include
,exclude
,outDir
) are minimal and clear.
2-2
: All componenttsconfig.json
extends paths resolve correctly
Verified thattsconfig.components.json
is located at the repository root and every"extends": "../../tsconfig.components.json"
incomponents/*/tsconfig.json
resolves without error. No changes required.
"extends": "../../tsconfig.components.json", | ||
"include": [ | ||
"app", | ||
"actions", | ||
"sources", | ||
"common" | ||
], | ||
"exclude": [ | ||
"dist", | ||
] | ||
"dist" | ||
], | ||
"compilerOptions": { | ||
"outDir": "./dist" | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Ensure the composite
flag (and any other previously-explicit options) still live in the shared config
Each component’s tsconfig.json
used to declare "composite": true
(and other build-critical options) locally. With the move to "extends": "../../tsconfig.components.json"
, those settings must now be defined in the shared file or tsc -b
/ incremental builds will break.
🏁 Script executed:
#!/bin/bash
# Sanity-check that the shared base config keeps the composite flag.
jq '.compilerOptions.composite' ../../tsconfig.components.json
Length of output: 151
🏁 Script executed:
#!/bin/bash
# Locate shared tsconfig file(s) in the repository
mapfile -t files < <(fd tsconfig.components.json)
if [ ${#files[@]} -eq 0 ]; then
echo "No tsconfig.components.json found"
exit 1
fi
for file in "${files[@]}"; do
echo "=== $file ==="
jq '.compilerOptions.composite' "$file" || echo "Unable to read composite flag in $file"
done
Length of output: 262
🏁 Script executed:
#!/bin/bash
set -e
echo "# Searching for tsconfig.components.json"
find . -type f -name "tsconfig.components.json" || echo "No tsconfig.components.json found"
echo
echo "# Searching for any JSON files with 'components' in the name"
find . -type f -iname "*components*.json" || echo "No JSON files with 'components' in name"
echo
echo "# Listing all tsconfig JSON files"
find . -type f -name "tsconfig*.json"
echo
echo "# Showing 'extends' entries in tsconfig JSON files"
grep -R -n --include 'tsconfig*.json' '"extends"' .
Length of output: 8859
🏁 Script executed:
#!/bin/bash
# Check whether the shared config declares composite (and other build-critical flags)
echo "## tsconfig.components.json compilerOptions"
jq '.compilerOptions' tsconfig.components.json
Length of output: 209
🏁 Script executed:
#!/bin/bash
# Grep for key build flags in tsconfig.components.json despite JSON syntax issues
echo "## Searching for 'composite' flag"
grep -R -n '"composite"' tsconfig.components.json || echo "composite not found"
echo
echo "## Searching for 'declaration' flag"
grep -R -n '"declaration"' tsconfig.components.json || echo "declaration not found"
echo
echo "## Searching for 'incremental' flag"
grep -R -n '"incremental"' tsconfig.components.json || echo "incremental not found"
Length of output: 564
Ensure all build-critical TS options live in tsconfig.components.json
The shared tsconfig.components.json
already includes
"composite": true
but the other flags—previously set in each component—are still missing. Without them, tsc -b
/incremental builds will break. Please add at least:
"compilerOptions": {
"composite": true,
+ "declaration": true,
+ "incremental": true,
/* …other shared options… */
}
🤖 Prompt for AI Agents
In components/buy_me_a_coffee/tsconfig.json lines 2 to 14, the file extends
tsconfig.components.json which includes "composite": true, but other essential
TypeScript build options required for incremental builds are missing. To fix
this, add the necessary build-critical compilerOptions such as "incremental":
true, "tsBuildInfoFile", and any other flags previously set in each component to
ensure tsc -b and incremental builds work correctly. These options should be
added under "compilerOptions" in this tsconfig.json.
"exclude": [ | ||
"dist" | ||
], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Explicitly exclude node_modules
to keep compilation fast
exclude
in an extending config replaces—not merges—the parent array.
Unless node_modules
is already excluded in the base config, the TS compiler may waste time crawling thousands of files during watch / incremental builds.
"exclude": [
"dist",
+ "node_modules"
],
If unsure whether the base config already excludes it, run:
🏁 Script executed:
#!/bin/bash
# List all tsconfig files that do NOT exclude node_modules
fd tsconfig.components.json -x jq -e '.exclude? // [] | index("node_modules") | not' {} |
head
Length of output: 164
🏁 Script executed:
#!/bin/bash
set -eux
# List all tsconfig JSON files in the repo
echo "Found tsconfig files:"
fd tsconfig.*\.json || true
# Show the lemon_squeezy component tsconfig
echo
echo "=== components/lemon_squeezy/tsconfig.json ==="
sed -n '1,100p' components/lemon_squeezy/tsconfig.json
# Extract the "extends" path from lemon_squeezy tsconfig
base=$(grep -Po '"extends"\s*:\s*"\K[^"]+' components/lemon_squeezy/tsconfig.json)
echo
echo "Base config referenced by extends: $base"
# If the base config file exists, print its first 200 lines to inspect "exclude"
if [ -f "$base" ]; then
echo
echo "=== $base ==="
sed -n '1,200p' "$base"
else
echo
echo "⚠️ Could not locate base config file at \"$base\""
fi
Length of output: 962
🏁 Script executed:
#!/bin/bash
set -eux
# Display the base tsconfig for components
echo "=== tsconfig.components.json (first 200 lines) ==="
sed -n '1,200p' tsconfig.components.json
echo
echo "=== Exclude entries in tsconfig.components.json ==="
jq '.exclude? // []' tsconfig.components.json
Length of output: 683
Add node_modules
to the exclude
list in component TSConfig
The shared tsconfig.components.json
does not define an exclude
array, so the per-component exclude
in components/lemon_squeezy/tsconfig.json
replaces rather than merges with the base. To prevent the TS compiler from crawling everything under node_modules
, explicitly exclude it:
File: components/lemon_squeezy/tsconfig.json
Lines ~9–11
"exclude": [
"dist",
+ "node_modules"
],
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
"exclude": [ | |
"dist" | |
], | |
"exclude": [ | |
"dist", | |
"node_modules" | |
], |
🤖 Prompt for AI Agents
In components/lemon_squeezy/tsconfig.json around lines 9 to 11, the current
"exclude" array only contains "dist", which replaces rather than merges with the
base config and allows TypeScript to crawl node_modules. To fix this, add
"node_modules" to the "exclude" array alongside "dist" to explicitly prevent the
TS compiler from processing files under node_modules.
"extends": "../../tsconfig.components.json", | ||
"include": [ | ||
"app", | ||
"actions", | ||
"sources", | ||
"common" | ||
], | ||
"exclude": [ | ||
"dist" | ||
], | ||
"compilerOptions": { | ||
"outDir": "./dist" | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Confirm the newly-added common
folder actually exists
"common"
is now part of the include
array. Some components do not ship a common
sub-folder, so TypeScript will silently ignore it, but build tools that glob files may not.
🏁 Script executed:
#!/bin/bash
# Fail the build early if the directory is missing
if [ ! -d components/mediatoolkit/common ]; then
echo "⚠️ components/mediatoolkit/common does not exist"
exit 1
fi
Length of output: 165
Missing common
folder in components/mediatoolkit
The tsconfig.json
now includes "common"
under include
, but components/mediatoolkit/common
does not exist. This will cause file-glob builds to fail.
Please either:
- Create the
components/mediatoolkit/common
directory (and add any necessary files), or - Remove
"common"
from theinclude
array incomponents/mediatoolkit/tsconfig.json
Affected file:
- components/mediatoolkit/tsconfig.json
"include": [ "app", "actions", "sources",
- "common"
],
<!-- suggestion_start -->
<details>
<summary>📝 Committable suggestion</summary>
> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
```suggestion
"extends": "../../tsconfig.components.json",
"include": [
"app",
"actions",
"sources"
],
"exclude": [
"dist"
],
"compilerOptions": {
"outDir": "./dist"
}
🤖 Prompt for AI Agents
In components/mediatoolkit/tsconfig.json lines 2 to 14, the "common" folder is
included in the "include" array but does not exist in the directory, causing
build failures. To fix this, either create the missing
components/mediatoolkit/common directory with necessary files or remove "common"
from the "include" array in this tsconfig.json file.
components/team_up/tsconfig.json
Outdated
"extends": "../../tsconfig.components.json", | ||
"include": [ | ||
"app", | ||
"actions", | ||
"sources", | ||
"common" | ||
], | ||
"exclude": [ | ||
"dist" | ||
], | ||
"compilerOptions": { | ||
"outDir": "./dist" | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Confirm base-config completeness and consider DRYing include
/exclude
.
All local compiler flags except outDir
were removed, so tsconfig.components.json
must now declare essentials such as composite
, module
, target
, allowJs
, etc. Please verify that nothing critical went missing.
The four folders in include
/ the single exclude
entry are identical across every component changed in this PR. If they truly are universal, you can move them to the shared config and delete them here to reduce repetition.
🏁 Script executed:
#!/bin/bash
# Quick sanity-check: does the shared config exist and do components still compile?
test -f tsconfig.components.json || echo "❌ Root tsconfig.components.json is missing"
# Spot-check for one indispensable flag
grep -q '"composite": *true' tsconfig.components.json \
|| echo "⚠️ composite flag not found in base config"
Length of output: 90
🏁 Script executed:
#!/bin/bash
# Verify essential compilerOptions in tsconfig.components.json
echo "Checking essential compiler flags in base config:"
for flag in module target allowJs strict declaration esModuleInterop; do
if grep -q "\"$flag\"" tsconfig.components.json; then
echo "✅ $flag found"
else
echo "⚠️ $flag not found"
fi
done
Length of output: 1125
Ensure Base Config Includes All Essential Compiler Options & DRY include
/exclude
The shared tsconfig.components.json
currently defines module
, target
, and allowJs
, but is missing several key flags that were removed from the local config:
• strict
• declaration
• esModuleInterop
Please confirm whether these were intentionally omitted; otherwise, add them to the base config to restore your previous type-safety guarantees.
Additionally, the include
and exclude
arrays in components/team_up/tsconfig.json
match those in every other component. If they truly apply across all components, move them into tsconfig.components.json
and remove them locally.
Attention points:
- tsconfig.components.json: add missing flags under
compilerOptions
- components/**/tsconfig.json: remove duplicated
include
/exclude
once hoisted
🤖 Prompt for AI Agents
In components/team_up/tsconfig.json lines 2 to 15, the local config duplicates
the include and exclude arrays already used by other components and omits
important compilerOptions like strict, declaration, and esModuleInterop that
exist in the base tsconfig.components.json. To fix this, move the include and
exclude arrays from components/team_up/tsconfig.json into
tsconfig.components.json to avoid duplication, and add the missing
compilerOptions (strict, declaration, esModuleInterop) to the base config's
compilerOptions section to ensure consistent type safety across all components.
Then remove the include and exclude arrays from the local tsconfig.json.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried using include/exclude only in the base file, but it resolves relative to the base file, not to each individual file referencing it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@GTFalcao, you're absolutely correct! That's a fundamental limitation of TypeScript config inheritance - the include
and exclude
paths are resolved relative to the config file that defines them, not relative to the extending config file.
This means if you moved include: ["app", "actions", "sources", "common"]
to the base tsconfig.components.json
, TypeScript would look for those directories at the repository root level (relative to the base config), not within each component directory.
Your current approach of keeping the include
/exclude
arrays in each component's config while centralizing only the compilerOptions
in the base config is the correct solution. The duplication is unavoidable due to this TypeScript limitation.
The refactoring successfully achieves the main goal of reducing verbosity in compiler options while maintaining the necessary path specifications for each component.
✏️ Learnings added
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#17983
File: components/team_up/tsconfig.json:2-15
Timestamp: 2025-08-08T01:15:48.881Z
Learning: In TypeScript config inheritance, include and exclude paths are resolved relative to the config file that defines them, not relative to the extending config file. This means include/exclude arrays cannot be centralized in a base config when components are in different directories - each component must define its own include/exclude paths.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
🧠 Learnings used
Learnt from: jcortes
PR: PipedreamHQ/pipedream#14935
File: components/sailpoint/package.json:15-18
Timestamp: 2024-12-12T19:23:09.039Z
Learning: When developing Pipedream components, do not add built-in Node.js modules like `fs` to `package.json` dependencies, as they are native modules provided by the Node.js runtime.
Learnt from: jverce
PR: PipedreamHQ/pipedream#14106
File: packages/sdk/src/server/__tests__/server.test.ts:174-192
Timestamp: 2024-10-31T23:57:17.282Z
Learning: In `packages/sdk/src/server/__tests__/server.test.ts`, when `ts-ignore` annotations are used in mock implementations, they are acceptable, and replacing them with type casting or mock types is unnecessary.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @GTFalcao I would say let's give it a try and merge. LGTM! Ready for release!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me! Just made one comment about optionally using ${configDir}
to move more of the shared config to the tsconfig.components.json
file.
tsconfig.components.json
Outdated
"allowJs": true | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
suggestion (non-blocking):
Starting in TypeScript 5.5, you can use the ${configDir}
template variable in configuration files, which is substituted with the directory containing the derived tsconfig.json
, not the shared tsconfig.components.json
. Using ${configDir}
would let you put include
, exclude
, and outDir
in this file rather than each of the tsconfig.json
files. For example:
"allowJs": true | |
} | |
"allowJs": true, | |
"outDir": "${configDir}/dist" | |
}, | |
"include": [ | |
"${configDir}/app", | |
"${configDir}/actions", | |
"${configDir}/sources", | |
"${configDir}/common" | |
], | |
"exclude": [ | |
"${configDir}/dist" | |
] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
package.json (1)
74-74
: TypeScript upgrade verified—tooling and shared config are compatibleI’ve confirmed the following after bumping
"typescript": ">=5.5.0 <5.7.0"
:
- Root devDependencies now include
• typescript: ≥5.5.0 <5.7.0
• @typescript-eslint/parser & plugin: ^8
• ts-jest: ^29.1.1 (and ^29.2.5 inpackages/sdk
)
These versions support TS 5.5/5.6 without known issues.tsconfig.components.json
at repo root:
• Exists, no top-levelinclude
/exclude
keys (correct—each component handles its own)
•compilerOptions.listEmittedFiles
istrue
• Other options (moduleResolution: "node"
,target: "ES2020"
,composite: true
, etc.) look good.- Every
components/**/tsconfig.json
extends the shared config via"../../tsconfig.components.json"
.- Jest configs reference
ts-jest
v29.x, which is compatible with TS 5.5/5.6.
⚠️ I wasn’t able to locate ascripts/tsPostBuild.mjs
—if you still use that pipeline step, please verify it correctly parses the TS 5.5/5.6listEmittedFiles
output.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yaml
is excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (1)
package.json
(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#17983
File: components/team_up/tsconfig.json:2-15
Timestamp: 2025-08-08T01:15:48.881Z
Learning: In TypeScript config inheritance, include and exclude paths are resolved relative to the config file that defines them, not relative to the extending config file. This means include/exclude arrays cannot be centralized in a base config when components are in different directories - each component must define its own include/exclude paths.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: Lint Code Base
- GitHub Check: Publish TypeScript components
- GitHub Check: Verify TypeScript components
- GitHub Check: pnpm publish
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 19
♻️ Duplicate comments (23)
components/yelp/tsconfig.json (1)
2-3
: Per-component include/exclude still needed; base config cannot scope them per directoryMirror the fix: add local include/exclude so files resolve relative to this component. See the raven_tools comment for details and rationale.
- "extends": "../../tsconfig.components.json" + "extends": "../../tsconfig.components.json", + "include": ["app", "actions", "sources", "common"], + "exclude": ["dist"]components/concord/tsconfig.json (1)
2-3
: Local include/exclude required for correct file resolutionTypeScript resolves include/exclude where they are defined. Add them here to scope to this component.
- "extends": "../../tsconfig.components.json" + "extends": "../../tsconfig.components.json", + "include": ["app", "actions", "sources", "common"], + "exclude": ["dist"]components/baserow/tsconfig.json (1)
2-3
: Add local include/exclude; avoid relying on centralized include pathsPrevents include paths from being resolved at repo root and ensures this component compiles its own sources.
- "extends": "../../tsconfig.components.json" + "extends": "../../tsconfig.components.json", + "include": ["app", "actions", "sources", "common"], + "exclude": ["dist"]components/profitwell/tsconfig.json (1)
2-3
: Re-introduce per-component include/excludeKeeps file discovery scoped to this package and avoids base-config-relative resolution.
- "extends": "../../tsconfig.components.json" + "extends": "../../tsconfig.components.json", + "include": ["app", "actions", "sources", "common"], + "exclude": ["dist"]components/persistiq/tsconfig.json (1)
2-3
: Local include/exclude should live herePrevents “no input files” or cross-component file pickup if the base config defines include/exclude.
- "extends": "../../tsconfig.components.json" + "extends": "../../tsconfig.components.json", + "include": ["app", "actions", "sources", "common"], + "exclude": ["dist"]components/xperiencify/tsconfig.json (1)
2-3
: Scope files locally with include/excludeSame rationale as other components in this PR.
- "extends": "../../tsconfig.components.json" + "extends": "../../tsconfig.components.json", + "include": ["app", "actions", "sources", "common"], + "exclude": ["dist"]components/resend/tsconfig.json (1)
2-3
: Add per-component include/exclude; centralizing them breaks resolutionGiven prior issues in this component with folder presence, prefer resilient globs if structure varies.
Option A (standard folders):
- "extends": "../../tsconfig.components.json" + "extends": "../../tsconfig.components.json", + "include": ["app", "actions", "sources", "common"], + "exclude": ["dist"]Option B (resilient):
- "extends": "../../tsconfig.components.json" + "extends": "../../tsconfig.components.json", + "include": ["./**/*"], + "exclude": ["./dist", "./node_modules"]components/mediatoolkit/tsconfig.json (1)
2-3
: This component likely lacks a “common” folder; don’t inherit a base include that references it.Per our prior learning and past comment, components/mediatoolkit/common doesn’t exist. If the base tsconfig includes "common", this will break globs/builds. Add local include/exclude/outDir and omit "common" here.
{ - "extends": "../../tsconfig.components.json" + "extends": "../../tsconfig.components.json", + "compilerOptions": { "outDir": "./dist" }, + "include": ["app", "actions", "sources"], + "exclude": ["dist"] }If “common” is later added, you can append it to include then.
components/formatting/tsconfig.json (1)
2-3
: Local include/exclude needed in component tsconfigSame concern as other components: include/exclude defined in the base config resolve relative to the base, not here. Add local include/exclude (and override outDir if needed) in this file.
Minimal example:
{ - "extends": "../../tsconfig.components.json" + "extends": "../../tsconfig.components.json", + "include": ["./app", "./actions", "./sources", "./common"], + "exclude": ["./dist"], + "compilerOptions": { "outDir": "./dist" } }components/waitwhile/tsconfig.json (1)
2-3
: Do not centralize include/exclude in the base configPer-TS semantics, include/exclude are resolved relative to where they’re declared. Define them locally in this component and override outDir if the base sets it.
{ - "extends": "../../tsconfig.components.json" + "extends": "../../tsconfig.components.json", + "include": ["./app", "./actions", "./sources", "./common"], + "exclude": ["./dist"], + "compilerOptions": { "outDir": "./dist" } }components/twitter/tsconfig.json (1)
2-3
: Add local include/exclude (and outDir override) in this componentExtending a base that defines include/exclude will resolve those paths relative to the base, not this directory. Define them here.
{ - "extends": "../../tsconfig.components.json" + "extends": "../../tsconfig.components.json", + "include": ["./app", "./actions", "./sources", "./common"], + "exclude": ["./dist"], + "compilerOptions": { "outDir": "./dist" } }components/smtp2go/tsconfig.json (1)
2-3
: Localize include/exclude; avoid relying on base for thesePlease add component-scoped include/exclude (and outDir override if base sets it), since base-resolved paths won’t be relative to this directory.
{ - "extends": "../../tsconfig.components.json" + "extends": "../../tsconfig.components.json", + "include": ["./app", "./actions", "./sources", "./common"], + "exclude": ["./dist"], + "compilerOptions": { "outDir": "./dist" } }components/serveravatar/tsconfig.json (1)
2-3
: Per-file include/exclude requiredTS resolves include/exclude relative to the file that defines them. Define them here and override outDir as needed.
{ - "extends": "../../tsconfig.components.json" + "extends": "../../tsconfig.components.json", + "include": ["./app", "./actions", "./sources", "./common"], + "exclude": ["./dist"], + "compilerOptions": { "outDir": "./dist" } }components/rss/tsconfig.json (1)
2-3
: Component-local include/exclude should not be centralizedAdd local include/exclude (and possibly outDir) here; base-resolved paths will be relative to the base.
{ - "extends": "../../tsconfig.components.json" + "extends": "../../tsconfig.components.json", + "include": ["./app", "./actions", "./sources", "./common"], + "exclude": ["./dist"], + "compilerOptions": { "outDir": "./dist" } }components/google_my_business/tsconfig.json (1)
2-3
: Define include/exclude in this tsconfig (don’t inherit them from base)Because include/exclude are resolved where they are declared, put them here and override outDir if the base sets it.
{ - "extends": "../../tsconfig.components.json" + "extends": "../../tsconfig.components.json", + "include": ["./app", "./actions", "./sources", "./common"], + "exclude": ["./dist"], + "compilerOptions": { "outDir": "./dist" } }components/lemon_squeezy/tsconfig.json (1)
2-2
: Same concern as wildberries: add local include/exclude and outDir.Please apply the same fix: define outDir ("./dist") and local include/exclude arrays in this file to avoid path resolution issues.
components/apitemplate_io/tsconfig.json (1)
2-3
: Add per-component paths (include/exclude) and outDir locally.Mirroring the wildberries note: centralize only path-agnostic options. Keep include/exclude and outDir here.
components/dialpad/tsconfig.json (1)
2-3
: Per-file include/exclude and outDir are required here.To avoid base-relative path issues, add local include/exclude arrays and set "compilerOptions.outDir": "./dist".
components/currencyscoop/tsconfig.json (1)
2-3
: Don’t hoist path-relative fields; define them locally.Please add local "include", "exclude", and "compilerOptions.outDir": "./dist" here.
components/tookan/tsconfig.json (1)
2-3
: Same as above: keep include/exclude and outDir in this tsconfig.Define per-component include/exclude and set outDir to "./dist" locally.
components/team_up/tsconfig.json (1)
2-3
: Per the earlier discussion: include/exclude must stay local; add outDir too.Given TS resolves include/exclude relative to where they’re declared, keep them here and set "compilerOptions.outDir": "./dist".
components/salesmate/tsconfig.json (1)
2-2
: Add local include/exclude and outDir in this component tsconfig.Avoid base-relative path pitfalls by defining "include", "exclude", and "compilerOptions.outDir": "./dist" here.
components/google_workspace/tsconfig.json (1)
2-3
: Same: add local include/exclude and outDir; extends-only will mis-resolve pathsThis tsconfig has the same risk as noted in components/cloudmersive/tsconfig.json: include/exclude should be local, and outDir must be overridden to avoid emitting to a shared root path.
Apply the same fix pattern as proposed for components/cloudmersive/tsconfig.json, adjusting only if this component’s directory layout differs.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (62)
components/amplenote/tsconfig.json
(1 hunks)components/apitemplate_io/tsconfig.json
(1 hunks)components/baserow/tsconfig.json
(1 hunks)components/beehiiv/tsconfig.json
(1 hunks)components/buy_me_a_coffee/tsconfig.json
(1 hunks)components/clientary/tsconfig.json
(1 hunks)components/cloudmersive/tsconfig.json
(1 hunks)components/coassemble/tsconfig.json
(1 hunks)components/concord/tsconfig.json
(1 hunks)components/currencyscoop/tsconfig.json
(1 hunks)components/data_axle_platform/tsconfig.json
(1 hunks)components/detrack/tsconfig.json
(1 hunks)components/dialpad/tsconfig.json
(1 hunks)components/docupilot/tsconfig.json
(1 hunks)components/expensify/tsconfig.json
(1 hunks)components/formatting/tsconfig.json
(1 hunks)components/google_my_business/tsconfig.json
(1 hunks)components/google_recaptcha/tsconfig.json
(1 hunks)components/google_workspace/tsconfig.json
(1 hunks)components/kanbanflow/tsconfig.json
(1 hunks)components/lemon_squeezy/tsconfig.json
(1 hunks)components/lob/tsconfig.json
(1 hunks)components/mailbluster/tsconfig.json
(1 hunks)components/mailboxvalidator/tsconfig.json
(1 hunks)components/mattermost/tsconfig.json
(1 hunks)components/mediatoolkit/tsconfig.json
(1 hunks)components/namely/tsconfig.json
(1 hunks)components/nectar_crm/tsconfig.json
(1 hunks)components/neverbounce/tsconfig.json
(1 hunks)components/niftyimages/tsconfig.json
(1 hunks)components/ninox/tsconfig.json
(1 hunks)components/onfleet/tsconfig.json
(1 hunks)components/persistiq/tsconfig.json
(1 hunks)components/pikaso/tsconfig.json
(1 hunks)components/practitest/tsconfig.json
(1 hunks)components/profitwell/tsconfig.json
(1 hunks)components/quickemailverification/tsconfig.json
(1 hunks)components/raven_tools/tsconfig.json
(1 hunks)components/repuso/tsconfig.json
(1 hunks)components/resend/tsconfig.json
(1 hunks)components/reversecontact/tsconfig.json
(1 hunks)components/rise/tsconfig.json
(1 hunks)components/rss/tsconfig.json
(1 hunks)components/salesmate/tsconfig.json
(1 hunks)components/serveravatar/tsconfig.json
(1 hunks)components/shipcloud/tsconfig.json
(1 hunks)components/smaily/tsconfig.json
(1 hunks)components/smtp2go/tsconfig.json
(1 hunks)components/team_up/tsconfig.json
(1 hunks)components/tolstoy/tsconfig.json
(1 hunks)components/tookan/tsconfig.json
(1 hunks)components/twitch_developer_app/tsconfig.json
(1 hunks)components/twitter/tsconfig.json
(1 hunks)components/verdict_as_a_service/tsconfig.json
(1 hunks)components/waitwhile/tsconfig.json
(1 hunks)components/wildberries/tsconfig.json
(1 hunks)components/workast/tsconfig.json
(1 hunks)components/xperiencify/tsconfig.json
(1 hunks)components/yelp/tsconfig.json
(1 hunks)components/zoho_assist/tsconfig.json
(1 hunks)components/zoho_catalyst/tsconfig.json
(1 hunks)tsconfig.components.json
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (20)
- components/buy_me_a_coffee/tsconfig.json
- tsconfig.components.json
- components/repuso/tsconfig.json
- components/zoho_catalyst/tsconfig.json
- components/mattermost/tsconfig.json
- components/twitch_developer_app/tsconfig.json
- components/verdict_as_a_service/tsconfig.json
- components/workast/tsconfig.json
- components/pikaso/tsconfig.json
- components/clientary/tsconfig.json
- components/zoho_assist/tsconfig.json
- components/tolstoy/tsconfig.json
- components/nectar_crm/tsconfig.json
- components/amplenote/tsconfig.json
- components/kanbanflow/tsconfig.json
- components/detrack/tsconfig.json
- components/onfleet/tsconfig.json
- components/practitest/tsconfig.json
- components/expensify/tsconfig.json
- components/quickemailverification/tsconfig.json
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-08-08T01:15:48.881Z
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#17983
File: components/team_up/tsconfig.json:2-15
Timestamp: 2025-08-08T01:15:48.881Z
Learning: In TypeScript config inheritance, include and exclude paths are resolved relative to the config file that defines them, not relative to the extending config file. This means include/exclude arrays cannot be centralized in a base config when components are in different directories - each component must define its own include/exclude paths.
Applied to files:
components/persistiq/tsconfig.json
components/smtp2go/tsconfig.json
components/waitwhile/tsconfig.json
components/twitter/tsconfig.json
components/formatting/tsconfig.json
components/google_my_business/tsconfig.json
components/team_up/tsconfig.json
components/rise/tsconfig.json
components/neverbounce/tsconfig.json
components/mailboxvalidator/tsconfig.json
components/baserow/tsconfig.json
components/shipcloud/tsconfig.json
components/concord/tsconfig.json
components/raven_tools/tsconfig.json
components/mediatoolkit/tsconfig.json
components/xperiencify/tsconfig.json
components/lob/tsconfig.json
components/data_axle_platform/tsconfig.json
components/serveravatar/tsconfig.json
components/resend/tsconfig.json
components/ninox/tsconfig.json
components/beehiiv/tsconfig.json
components/google_recaptcha/tsconfig.json
components/cloudmersive/tsconfig.json
components/namely/tsconfig.json
components/salesmate/tsconfig.json
components/yelp/tsconfig.json
components/lemon_squeezy/tsconfig.json
components/currencyscoop/tsconfig.json
components/apitemplate_io/tsconfig.json
components/profitwell/tsconfig.json
components/dialpad/tsconfig.json
components/rss/tsconfig.json
components/docupilot/tsconfig.json
components/niftyimages/tsconfig.json
components/mailbluster/tsconfig.json
components/wildberries/tsconfig.json
components/coassemble/tsconfig.json
components/reversecontact/tsconfig.json
components/smaily/tsconfig.json
components/tookan/tsconfig.json
components/google_workspace/tsconfig.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: pnpm publish
- GitHub Check: Publish TypeScript components
- GitHub Check: Verify TypeScript components
- GitHub Check: Lint Code Base
"extends": "../../tsconfig.components.json" | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Centralizing include/exclude in the base tsconfig breaks per-component boundaries
In TypeScript, include/exclude and other path-based options are resolved relative to the config file that defines them. If the root tsconfig.components.json defines include/exclude (and/or outDir), those paths are resolved relative to the root, not this component directory. This typically results in compiling the wrong files, compiling nothing, or emitting to an unexpected output directory.
Action:
- Keep the shared compilerOptions in the base config, but define include/exclude (and override outDir if needed) in each component’s tsconfig.json.
Example patch (adjust folders to what actually exists in this component):
{
- "extends": "../../tsconfig.components.json"
+ "extends": "../../tsconfig.components.json",
+ "include": [
+ "./app",
+ "./actions",
+ "./sources",
+ "./common"
+ ],
+ "exclude": [
+ "./dist"
+ ],
+ "compilerOptions": {
+ "outDir": "./dist"
+ }
}
Also, if the base config uses placeholders like ${configDir}, note that native tsconfig doesn't support variable interpolation—those paths will not resolve as intended.
Run this script to verify the base config and identify component tsconfigs missing local include/exclude:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Base config (tsconfig.components.json) overview:"
fd -a tsconfig.components.json | while read -r base; do
echo "Found base at: $base"
echo "Includes in base:"
jq -r '.include // empty | .[]?' "$base" || true
echo "Excludes in base:"
jq -r '.exclude // empty | .[]?' "$base" || true
echo "compilerOptions.outDir in base:"
jq -r '.compilerOptions.outDir // empty' "$base" || true
echo "Raw file content (first 40 lines):"
sed -n '1,40p' "$base"
done
echo
echo "Component tsconfigs missing local include/exclude:"
fd -a 'tsconfig.json' components | while read -r cfg; do
has_include="$(jq -e 'has("include")' "$cfg" >/dev/null 2>&1 && echo yes || echo no)"
has_exclude="$(jq -e 'has("exclude")' "$cfg" >/dev/null 2>&1 && echo yes || echo no)"
if [[ "$has_include" == "no" || "$has_exclude" == "no" ]]; then
echo "- $cfg (include: $has_include, exclude: $has_exclude)"
fi
done
echo
echo "Verifying extends path exists for each component tsconfig:"
fd -a 'tsconfig.json' components | while read -r cfg; do
dir="$(dirname "$cfg")"
base="$dir/../../tsconfig.components.json"
if [[ -f "$base" ]]; then
echo "[OK] $cfg -> extends exists at $base"
else
echo "[MISSING] $cfg -> expected extends at $base not found"
fi
done
Length of output: 65729
Require per-component include/exclude and outDir in tsconfig.json
The base tsconfig.components.json
currently declares
"include": ["${configDir}/app", …],
"exclude": ["${configDir}/dist"],
"compilerOptions": { "outDir": "${configDir}/dist", … }
but:
- TypeScript does not support
${…}
variables intsconfig.json
. include
/exclude
paths are always resolved relative to the file that defines them, so putting them in the root config means every component will try to compile against the monorepo root—not its own./app
,./actions
, etc.
Our audit shows every component under components/
(e.g. beehiiv
, expensify
, mailbluster
, etc.) is missing local include
/exclude
keys and an outDir
override.
Action items:
- Keep shared
compilerOptions
intsconfig.components.json
, but remove or ignore itsinclude
/exclude
(they won’t work). - In each
components/<name>/tsconfig.json
, add component-scoped entries. For example:
{
"extends": "../../tsconfig.components.json",
+ "include": [
+ "./app",
+ "./actions",
+ "./sources",
+ "./common"
+ ],
+ "exclude": [
+ "./dist"
+ ],
+ "compilerOptions": {
+ "outDir": "./dist"
+ }
}
Apply this pattern across all component directories so each package builds only its own source.
🤖 Prompt for AI Agents
components/beehiiv/tsconfig.json around lines 2-3: the file only extends the
root config and lacks component-scoped include/exclude and an outDir override;
update this file to add an "include" array pointing to this component's source
(e.g., "./app", "./actions", "./lib" as applicable), an "exclude" array
excluding this component's local dist (e.g., "./dist", "node_modules"), and set
compilerOptions.outDir to the component's dist (e.g., "./dist"); keep extending
the shared tsconfig for common compilerOptions but ensure the per-component
include/exclude and outDir are declared here so paths resolve relative to the
component.
"exclude": [ | ||
"dist", | ||
] | ||
"extends": "../../tsconfig.components.json" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Extends-only config likely breaks include/exclude and outDir; add local overrides
Per our prior learning: include/exclude are resolved relative to the config that defines them. Centralizing these in a base config won’t work for per-component directories, and relative compilerOptions like outDir in the base will also resolve relative to the base file, causing outputs to collide (e.g., emitting to a single top-level dist).
Action:
- Add component-local include/exclude and override outDir so emits land in this component’s dist.
Apply something like this:
{
- "extends": "../../tsconfig.components.json"
+ "extends": "../../tsconfig.components.json",
+ "compilerOptions": {
+ // Ensure emitted JS and build info live under this component
+ "outDir": "./dist"
+ },
+ // These must be relative to THIS tsconfig, not the base
+ "include": [
+ "app/**/*.ts",
+ "actions/**/*.ts",
+ "sources/**/*.ts",
+ "common/**/*.ts"
+ ],
+ "exclude": [
+ "dist"
+ ]
}
Run to confirm the base config won’t work as-is and that this file lacks local overrides:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Base config (should exist at repo root):"
if [[ -f "tsconfig.components.json" ]]; then
jq '{include, exclude, compilerOptions: {outDir}}' tsconfig.components.json
else
echo "Missing tsconfig.components.json at repo root"
fi
echo
echo "Check for unsupported variable tokens in base (e.g., \${configDir}):"
rg -n --fixed-strings '${configDir}' tsconfig.components.json || echo "No \${configDir} tokens found."
echo
echo "This component's tsconfig (should have local include/exclude/outDir overrides):"
jq '{extends, include, exclude, compilerOptions: {outDir}}' components/cloudmersive/tsconfig.json || true
echo
echo "Sanity: verify base outDir is not causing cross-component collisions:"
jq -r '.compilerOptions.outDir // "<none>"' tsconfig.components.json
echo
echo "If base includes/excludes are present, remember they are resolved RELATIVE TO THE BASE file."
echo "Each component should define its own include/exclude and outDir."
Length of output: 406
I need to re‐inspect both the base and component tsconfig files with corrected jq syntax. Running:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Base config (tsconfig.components.json) keys:"
if [[ -f tsconfig.components.json ]]; then
jq '{include: .include, exclude: .exclude, outDir: .compilerOptions.outDir}' tsconfig.components.json
else
echo "tsconfig.components.json not found"
fi
echo
echo "Component config (components/cloudmersive/tsconfig.json) keys:"
if [[ -f components/cloudmersive/tsconfig.json ]]; then
jq '{extends: .extends, include: .include, exclude: .exclude, outDir: .compilerOptions.outDir}' components/cloudmersive/tsconfig.json
else
echo "components/cloudmersive/tsconfig.json not found"
fi
Length of output: 898
Add local include/exclude and outDir overrides in components/cloudmersive/tsconfig.json
TypeScript resolves include
/exclude
/outDir
relative to the tsconfig that defines them. Our base config uses ${configDir}
tokens, but without overrides in this component, the compiler will look for source files in the root ${configDir}/app
etc. and emit into ${configDir}/dist
, causing missing files and output collisions.
• File needing changes: components/cloudmersive/tsconfig.json
• Current state: extends only, with no local include
, exclude
, or outDir
Recommended patch:
{
"extends": "../../tsconfig.components.json",
+ "compilerOptions": {
+ // Emit JS/build info under this component
+ "outDir": "./dist"
+ },
+ // Paths are relative to this file
+ "include": [
+ "app/**/*.ts",
+ "actions/**/*.ts",
+ "sources/**/*.ts",
+ "common/**/*.ts"
+ ],
+ "exclude": [
+ "dist"
+ ]
}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
"extends": "../../tsconfig.components.json" | |
{ | |
"extends": "../../tsconfig.components.json", | |
"compilerOptions": { | |
// Emit JS/build info under this component | |
"outDir": "./dist" | |
}, | |
// Paths are relative to this file | |
"include": [ | |
"app/**/*.ts", | |
"actions/**/*.ts", | |
"sources/**/*.ts", | |
"common/**/*.ts" | |
], | |
"exclude": [ | |
"dist" | |
] | |
} |
🤖 Prompt for AI Agents
In components/cloudmersive/tsconfig.json around line 2, the file only extends
the base tsconfig and lacks local include/exclude/outDir overrides; add local
"include" pointing to the component's source (e.g. ["src/**/*","app/**/*"] or
your component's source folders), "exclude" to ignore root-level artifacts (e.g.
["node_modules","dist","**/*.spec.ts"]), and an "outDir" set to this component's
build output (e.g. "./dist") so TypeScript resolves paths relative to this
tsconfig and emits into the component-specific directory rather than the shared
configDir.
"exclude": [ | ||
"dist", | ||
] | ||
"extends": "../../tsconfig.components.json" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Localize path-based settings.
Add local include/exclude/outDir to prevent cross-component compilation and output collisions.
{
"extends": "../../tsconfig.components.json",
+ "compilerOptions": { "outDir": "./dist" },
+ "include": ["app", "actions", "sources"],
+ "exclude": ["dist"]
}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
"extends": "../../tsconfig.components.json" | |
{ | |
"extends": "../../tsconfig.components.json", | |
"compilerOptions": { "outDir": "./dist" }, | |
"include": ["app", "actions", "sources"], | |
"exclude": ["dist"] | |
} |
🤖 Prompt for AI Agents
In components/coassemble/tsconfig.json around line 2, the config only extends
the shared tsconfig which allows path-based settings to leak between components;
add local include and exclude patterns (e.g., include src/**/* and exclude
node_modules, dist, build, and other components) and set a component-specific
outDir (e.g., ./dist or ./build) to ensure compilation scope and outputs are
localized and prevent cross-component compilation and output collisions.
"exclude": [ | ||
"dist", | ||
] | ||
"extends": "../../tsconfig.components.json" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Re-add per-component include/exclude/outDir; verify allowJs if JS sources exist.
Centralizing these in the base won’t resolve relative to this directory and may emit to a global dist. Restore them locally.
Patch:
{
- "extends": "../../tsconfig.components.json"
+ "extends": "../../tsconfig.components.json",
+ "compilerOptions": { "outDir": "./dist" },
+ "include": ["app", "actions", "sources", "common"],
+ "exclude": ["dist"]
}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
"extends": "../../tsconfig.components.json" | |
{ | |
"extends": "../../tsconfig.components.json", | |
"compilerOptions": { "outDir": "./dist" }, | |
"include": ["app", "actions", "sources", "common"], | |
"exclude": ["dist"] | |
} |
🤖 Prompt for AI Agents
In components/data_axle_platform/tsconfig.json around line 2, the file currently
only extends the shared base which causes include/exclude and outDir to resolve
incorrectly for this component and may emit compiled files into a global dist;
restore per-component "include", "exclude", and "outDir" fields (with paths
relative to this directory) so this package compiles only its sources into its
own output folder, and if this component contains any .js sources set "allowJs":
true (or verify it can remain false). Keep the "extends" line, but add the local
include/exclude/outDir (and allowJs if needed) to override base settings for
correct local resolution and output.
"extends": "../../tsconfig.components.json" | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Keep shared compilerOptions in the base, but define include/exclude/outDir locally.
"../../tsconfig.components.json" path looks right, but per-component paths must remain here to avoid empty builds or a shared root/dist.
Patch:
{
- "extends": "../../tsconfig.components.json"
+ "extends": "../../tsconfig.components.json",
+ "compilerOptions": { "outDir": "./dist" },
+ "include": ["app", "actions", "sources", "common"],
+ "exclude": ["dist"]
}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
"extends": "../../tsconfig.components.json" | |
} | |
{ | |
"extends": "../../tsconfig.components.json", | |
"compilerOptions": { "outDir": "./dist" }, | |
"include": ["app", "actions", "sources", "common"], | |
"exclude": ["dist"] | |
} |
🤖 Prompt for AI Agents
In components/docupilot/tsconfig.json around lines 2 to 3, the file currently
only extends the shared config which is fine for compilerOptions, but you must
add per-component include/exclude and outDir to avoid empty builds or writing
into a shared root; update this file to keep "extends":
"../../tsconfig.components.json" and add local "include": ["src/**/*"],
"exclude": ["node_modules","**/*.spec.ts"], and "compilerOptions": { "outDir":
"dist" } (or add outDir at top-level if your base expects it), ensuring these
paths are component-local.
"exclude": [ | ||
"dist", | ||
] | ||
"extends": "../../tsconfig.components.json" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Centralized include/exclude/outDir is unsafe; TypeScript doesn’t support ${...} placeholders in tsconfig.
If the base uses values like ${configDir}, TS will treat them literally. Restore per-component include/exclude and outDir here.
Patch:
{
- "extends": "../../tsconfig.components.json"
+ "extends": "../../tsconfig.components.json",
+ "compilerOptions": { "outDir": "./dist" },
+ "include": ["app", "actions", "sources", "common"],
+ "exclude": ["dist"]
}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
"extends": "../../tsconfig.components.json" | |
{ | |
"extends": "../../tsconfig.components.json", | |
"compilerOptions": { "outDir": "./dist" }, | |
"include": ["app", "actions", "sources", "common"], | |
"exclude": ["dist"] | |
} |
🤖 Prompt for AI Agents
In components/reversecontact/tsconfig.json around line 2, the config currently
extends the centralized tsconfig which uses ${...} placeholders that TypeScript
will treat literally; restore local include/exclude and explicit outDir here to
avoid broken paths. Keep the "extends" but add/override "include" (e.g., the
component's src/**/*.ts/tsx), "exclude" (node_modules, dist, etc.) and a
concrete "compilerOptions.outDir" pointing to this component's build output (no
${...} placeholders); ensure paths are relative to the component folder and
remove reliance on centralized placeholders so TS resolves files correctly.
"extends": "../../tsconfig.components.json" | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Do not centralize include/exclude or outDir in the base config — restore them locally per component.
TypeScript resolves include/exclude and other relative paths relative to the config file that defines them. If the base at repo root defines these (or uses placeholders like ${configDir}, which TS doesn’t support), this project may compile zero files or emit to a shared root/dist. Reintroduce component-local include/exclude and outDir here.
Run this to confirm whether the base centralizes these and uses unsupported placeholders:
Apply this minimal fix locally:
{
- "extends": "../../tsconfig.components.json"
+ "extends": "../../tsconfig.components.json",
+ "compilerOptions": {
+ "outDir": "./dist"
+ },
+ "include": [
+ "app",
+ "actions",
+ "sources",
+ "common"
+ ],
+ "exclude": [
+ "dist"
+ ]
}
I can bulk-generate consistent patches for all components if you confirm this approach.
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Base tsconfig:"
fd -a tsconfig.components.json | xargs -I{} sh -c 'echo "==> {}"; cat "{}"'
echo
echo "Components with only 'extends' (no include/exclude/outDir):"
rg -n --glob 'components/**/tsconfig.json' -e '"extends":' -e '"include":' -e '"exclude":' -e '"outDir":' | sed 's/^/ /'
echo
echo "Check for potential placeholder usage:"
rg -n '\$\{configDir\}' tsconfig.components.json components/**/tsconfig.json || true
Length of output: 9178
Restore component-level include/exclude and outDir in tsconfig.json
TypeScript resolves include
/exclude
and outDir
relative to the config file that defines them, and the base tsconfig.components.json
uses unsupported ${configDir}
placeholders. As a result, no files will match and output will go to an invalid path.
Please update components/rise/tsconfig.json (and likewise for all other components under components/**
) as follows:
• File: components/rise/tsconfig.json
Add back local compilerOptions.outDir
, include
, and exclude
.
{
- "extends": "../../tsconfig.components.json"
+ "extends": "../../tsconfig.components.json",
+ "compilerOptions": {
+ "outDir": "./dist"
+ },
+ "include": [
+ "app",
+ "actions",
+ "sources",
+ "common"
+ ],
+ "exclude": [
+ "dist"
+ ]
}
I can bulk-generate consistent patches for all components once you approve this approach.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
"extends": "../../tsconfig.components.json" | |
} | |
{ | |
"extends": "../../tsconfig.components.json", | |
"compilerOptions": { | |
"outDir": "./dist" | |
}, | |
"include": [ | |
"app", | |
"actions", | |
"sources", | |
"common" | |
], | |
"exclude": [ | |
"dist" | |
] | |
} |
🤖 Prompt for AI Agents
In components/rise/tsconfig.json around lines 2 to 3, the file currently only
extends the base tsconfig which uses ${configDir} placeholders, causing
TypeScript to misresolve include/exclude and outDir; restore component-level
settings by adding a local compilerOptions.outDir (pointing to the component's
build output, e.g., ../../dist/components/rise or appropriate relative path),
and add explicit include (e.g., ["src/**/*", "index.ts"]) and exclude (e.g.,
["node_modules", "dist", "**/*.spec.ts"]) entries so paths are resolved relative
to this file; apply the same pattern to all components under components/** for
consistent builds.
"extends": "../../tsconfig.components.json" | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Ensure outDir/include/exclude aren’t inherited from the base.
TS resolves paths where they’re defined. Add local overrides.
{
- "extends": "../../tsconfig.components.json"
+ "extends": "../../tsconfig.components.json",
+ "compilerOptions": { "outDir": "./dist" },
+ "include": ["app", "actions", "sources"],
+ "exclude": ["dist"]
}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
"extends": "../../tsconfig.components.json" | |
} | |
{ | |
"extends": "../../tsconfig.components.json", | |
"compilerOptions": { "outDir": "./dist" }, | |
"include": ["app", "actions", "sources"], | |
"exclude": ["dist"] | |
} |
🤖 Prompt for AI Agents
In components/shipcloud/tsconfig.json around lines 2–3, the file currently
extends the base tsconfig but does not override outDir/include/exclude, causing
the base settings to be inherited; add local overrides: set
compilerOptions.outDir to the package build folder (e.g. "./dist") and add
explicit top-level include (e.g. ["src/**/*"]) and exclude (e.g.
["node_modules","dist"]) entries to ensure paths are resolved from this package
rather than the base.
"exclude": [ | ||
"dist", | ||
] | ||
"extends": "../../tsconfig.components.json" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Per-component boundaries lost — reintroduce include/exclude and outDir.
Without local include/exclude/outDir, this project’s files may not be compiled, or emit to a global dist. Keep extends for shared compilerOptions; scope paths locally here.
Patch:
{
- "extends": "../../tsconfig.components.json"
+ "extends": "../../tsconfig.components.json",
+ "compilerOptions": { "outDir": "./dist" },
+ "include": ["app", "actions", "sources", "common"],
+ "exclude": ["dist"]
}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
"extends": "../../tsconfig.components.json" | |
{ | |
"extends": "../../tsconfig.components.json", | |
"compilerOptions": { "outDir": "./dist" }, | |
"include": ["app", "actions", "sources", "common"], | |
"exclude": ["dist"] | |
} |
🤖 Prompt for AI Agents
In components/smaily/tsconfig.json around line 2, the file only extends the
shared config which loses per-component include/exclude and outDir boundaries;
update the file to keep "extends": "../../tsconfig.components.json" and add a
local "include" (e.g. ["src/**/*"]), "exclude" (e.g. ["node_modules", "dist"]),
and a compilerOptions.outDir pointing to a component-specific emit directory
(e.g. "../../dist/components/smaily"); ensure these fields are added at the
top-level so the shared compilerOptions are extended but the component compiles
and emits only its own files.
"extends": "../../tsconfig.components.json" | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Extends-only config risks incorrect paths; keep include/exclude and outDir local.
In TS config inheritance, path-based fields (include, exclude, outDir) resolve relative to the file that defines them. If these are defined in the base, they’ll be relative to the repo root, not this component. Also, tsconfig doesn’t support placeholders like ${configDir}. Centralize path-agnostic compilerOptions only.
Proposed fix: add per-component include/exclude and outDir here.
{
- "extends": "../../tsconfig.components.json"
+ "extends": "../../tsconfig.components.json",
+ "compilerOptions": {
+ "outDir": "./dist"
+ },
+ "include": [
+ "app",
+ "actions",
+ "sources",
+ "common"
+ ],
+ "exclude": [
+ "dist",
+ "node_modules"
+ ]
}
Run this script to verify the base config doesn’t define path-relative fields and to list components missing local include/outDir:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
base="tsconfig.components.json"
if [[ ! -f "$base" ]]; then
echo "❌ $base not found at repo root"; exit 1
fi
echo "=== Inspect $base ==="
jq '.compilerOptions.outDir? // "<no outDir>"' "$base"
jq '.include? // "<no include>"' "$base"
jq '.exclude? // "<no exclude>"' "$base"
echo
echo "⚠️ Checking for unsupported placeholders in $base"
grep -n '\${' "$base" && echo "Found placeholder-like tokens (unsupported by TS)" || echo "No placeholder tokens found"
echo
echo "=== Components missing local include ==="
fd 'components/*/tsconfig.json' | while read -r f; do
if ! jq -e '.include? | length > 0' "$f" >/dev/null 2>&1; then
echo "$f"
fi
done
echo
echo "=== Components missing local compilerOptions.outDir ==="
fd 'components/*/tsconfig.json' | while read -r f; do
if ! jq -e '.compilerOptions.outDir? | length > 0' "$f" >/dev/null 2>&1; then
echo "$f"
fi
done
Length of output: 1324
Localize path-based TS config settings and remove unsupported placeholders
The root tsconfig.components.json
currently defines outDir
, include
, and exclude
using ${configDir}
placeholders, which TypeScript doesn’t support—and even if it did, these path-based fields would resolve relative to the base file, not each component. Per TS config inheritance rules, each component must declare its own outDir
, include
, and exclude
.
Please make the following changes:
• In tsconfig.components.json
(repo root):
– Remove the placeholder-based path fields:
• compilerOptions.outDir
• include
• exclude
• In each component’s tsconfig.json
(e.g. components/wildberries/tsconfig.json
):
– Add local path settings, for example:
{
"extends": "../../tsconfig.components.json",
+ "compilerOptions": {
+ "outDir": "./dist"
+ },
+ "include": [
+ "app",
+ "actions",
+ "sources",
+ "common"
+ ],
+ "exclude": [
+ "dist",
+ "node_modules"
+ ]
}
Repeat this pattern for any other component configs to ensure consistent, correct path resolution.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
"extends": "../../tsconfig.components.json" | |
} | |
{ | |
"extends": "../../tsconfig.components.json", | |
"compilerOptions": { | |
"outDir": "./dist" | |
}, | |
"include": [ | |
"app", | |
"actions", | |
"sources", | |
"common" | |
], | |
"exclude": [ | |
"dist", | |
"node_modules" | |
] | |
} |
🤖 Prompt for AI Agents
In components/wildberries/tsconfig.json around lines 2-3, the config currently
only extends the root tsconfig which contains unsupported placeholder path
fields; remove any placeholder-based path fields (compilerOptions.outDir,
include, exclude) from the root tsconfig.components.json, and in this component
tsconfig add local path settings: set compilerOptions.outDir to a
component-local folder (e.g. "./dist"), and add include (e.g. ["src/**/*"]) and
exclude (e.g. ["node_modules", "dist"]) entries so paths resolve correctly
per-component.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
components/infusionsoft/tsconfig.json
(1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-08-08T01:15:48.881Z
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#17983
File: components/team_up/tsconfig.json:2-15
Timestamp: 2025-08-08T01:15:48.881Z
Learning: In TypeScript config inheritance, include and exclude paths are resolved relative to the config file that defines them, not relative to the extending config file. This means include/exclude arrays cannot be centralized in a base config when components are in different directories - each component must define its own include/exclude paths.
Applied to files:
components/infusionsoft/tsconfig.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: Verify TypeScript components
- GitHub Check: pnpm publish
- GitHub Check: Publish TypeScript components
- GitHub Check: Lint Code Base
"extends": "../../tsconfig.components.json" | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Verify base config doesn’t rely on unsupported placeholders (e.g., ${configDir}).
TypeScript doesn’t interpolate variables in tsconfig. If the base uses ${configDir} in include/exclude/outDir, tsc will misinterpret these paths.
Run this script to confirm and inspect base config usage:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Show base config location and contents
if [ -f tsconfig.components.json ]; then
echo "Found tsconfig.components.json at repo root"
echo "----- BEGIN tsconfig.components.json -----"
cat tsconfig.components.json
echo "----- END tsconfig.components.json -----"
else
echo "tsconfig.components.json not found at repo root" >&2
fi
# Search for unsupported placeholders like ${configDir}
echo "Searching for placeholder patterns in tsconfig files..."
rg -n --no-heading '\$\{configDir\}|\$\{[^}]+\}' --glob 'tsconfig*.json' || true
# Check if base defines include/exclude (and note they’d resolve relative to the base file)
echo "Base include/exclude definitions (if any):"
rg -n --no-heading '^\s*"include"\s*:|^\s*"exclude"\s*:' tsconfig.components.json || true
Length of output: 1599
Remove unsupported ${configDir}
placeholders in your base tsconfig
TypeScript doesn’t interpolate variables in tsconfig files, so all of these entries will be treated literally and fail to resolve:
- In
tsconfig.components.json
(at repo root):- Lines 3–6:
"${configDir}/app"
,"${configDir}/actions"
,"${configDir}/sources"
,"${configDir}/common"
ininclude
- Line 9:
"${configDir}/dist"
inexclude
- Line 23:
"${configDir}/dist"
incompilerOptions.outDir
- Lines 3–6:
You should replace these with real relative paths (resolved against the base config file) or move each component’s include
/exclude
/outDir
definitions into its own tsconfig. For example:
// tsconfig.components.json
{
"include": [
"components/*/app",
"components/*/actions",
"components/*/sources",
"components/*/common"
],
"exclude": [
"components/*/dist"
],
"compilerOptions": {
// …
"outDir": "components/*/dist"
}
}
Alternatively, define include
, exclude
, and outDir
in each components/<name>/tsconfig.json
per TS config inheritance rules.
🤖 Prompt for AI Agents
In components/infusionsoft/tsconfig.json around lines 2–3, the base tsconfig
(tsconfig.components.json) uses unsupported "${configDir}" placeholders which
TypeScript will not interpolate; update the base config so
include/exclude/outDir use real relative paths (e.g. replace
"${configDir}/app","${configDir}/actions","${configDir}/sources","${configDir}/common"
with
"components/*/app","components/*/actions","components/*/sources","components/*/common",
replace "${configDir}/dist" in exclude with "components/*/dist", and replace
"${configDir}/dist" outDir with a concrete path like "components/*/dist"), or
remove those entries from the shared base and instead add proper
include/exclude/outDir entries into each component's own tsconfig.json resolved
relative to that component.
Do not centralize include/exclude; define them locally per component.
TypeScript resolves include/exclude relative to the config that defines them. Moving these to the base config will resolve paths relative to the base file, not this component, causing incorrect file discovery.
Apply this diff to restore local include/exclude (keeping compilerOptions inherited from the base):
{
- "extends": "../../tsconfig.components.json"
+ "extends": "../../tsconfig.components.json",
+ "include": [
+ "app/**/*",
+ "actions/**/*",
+ "sources/**/*",
+ "common/**/*"
+ ],
+ "exclude": [
+ "dist",
+ "node_modules"
+ ]
}
If the base attempts to set outDir using placeholders, you can also add a local override:
+ "compilerOptions": {
+ "outDir": "dist"
+ }
🤖 Prompt for AI Agents
In components/infusionsoft/tsconfig.json around lines 2 to 3, the component
currently only extends the base config which centralized include/exclude;
restore local include and exclude entries so paths are resolved relative to this
component (e.g., add an "include" array for this component's src/test/typings as
needed and an "exclude" array for node_modules/build artifacts) while keeping
"extends" to inherit compilerOptions from the base; if the base config sets
outDir using placeholders that don't resolve here, add a local
compilerOptions.outDir override pointing to the correct component-specific
output directory.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Reusing the common properties of the tsconfig.json file so that future file additions are less verbose
Summary by CodeRabbit