Skip to content

Commit 3f06531

Browse files
committed
feat(astro): Add assets option to source maps upload options
1 parent 85a494a commit 3f06531

File tree

3 files changed

+45
-1
lines changed

3 files changed

+45
-1
lines changed

packages/astro/src/integration/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export const sentryAstro = (options: SentryOptions = {}): AstroIntegration => {
4242
authToken: uploadOptions.authToken ?? env.SENTRY_AUTH_TOKEN,
4343
telemetry: uploadOptions.telemetry ?? true,
4444
sourcemaps: {
45-
assets: [getSourcemapsAssetsGlob(config)],
45+
assets: uploadOptions.assets ?? [getSourcemapsAssetsGlob(config)],
4646
},
4747
debug: options.debug ?? false,
4848
}),

packages/astro/src/integration/types.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,18 @@ type SourceMapsOptions = {
6868
* @default true
6969
*/
7070
telemetry?: boolean;
71+
72+
/**
73+
* A glob or an array of globs that specify the build artifacts and source maps that will uploaded to Sentry.
74+
*
75+
* If this option is not specified, sensible defaults based on your `outDir`, `rootDir` and `adapter`
76+
* config will be used. Use this option to override these defaults, for instance if you have a
77+
* customized build setup that diverges from Astro's defaults.
78+
*
79+
* The globbing patterns must follow the implementation of the `glob` package.
80+
* @see https://www.npmjs.com/package/glob#glob-primer
81+
*/
82+
assets?: string | Array<string>;
7183
};
7284
};
7385

packages/astro/test/integration/index.test.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,38 @@ describe('sentryAstro integration', () => {
110110
});
111111
});
112112

113+
it('prefers user-specified assets-globs over the default values', async () => {
114+
const integration = sentryAstro({
115+
sourceMapsUploadOptions: {
116+
enabled: true,
117+
org: 'my-org',
118+
project: 'my-project',
119+
assets: ['dist/server/**/*, dist/client/**/*'],
120+
},
121+
});
122+
// @ts-expect-error - the hook exists and we only need to pass what we actually use
123+
await integration.hooks['astro:config:setup']({
124+
updateConfig,
125+
injectScript,
126+
// @ts-expect-error - only passing in partial config
127+
config: {
128+
outDir: new URL('file://path/to/project/build'),
129+
},
130+
});
131+
132+
expect(sentryVitePluginSpy).toHaveBeenCalledTimes(1);
133+
expect(sentryVitePluginSpy).toHaveBeenCalledWith({
134+
authToken: 'my-token',
135+
org: 'my-org',
136+
project: 'my-project',
137+
telemetry: true,
138+
debug: false,
139+
sourcemaps: {
140+
assets: ['dist/server/**/*, dist/client/**/*'],
141+
},
142+
});
143+
});
144+
113145
it("doesn't enable source maps if `sourceMapsUploadOptions.enabled` is `false`", async () => {
114146
const integration = sentryAstro({
115147
sourceMapsUploadOptions: { enabled: false },

0 commit comments

Comments
 (0)