@arcgis/lumina-compiler 4.33.0-next.16 → 4.33.0-next.160
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/context/index.d.ts +25 -25
- package/dist/context/logger.d.ts +8 -0
- package/dist/context/typeScript.d.ts +2 -2
- package/dist/context/utils.d.ts +1 -1
- package/dist/dependencies/arcgisCore.d.ts +1 -1
- package/dist/dependencies/discover.d.ts +5 -4
- package/dist/dependencies/index.d.ts +2 -2
- package/dist/dependencies/loaders.d.ts +3 -7
- package/dist/dependencies/lumina.d.ts +3 -0
- package/dist/dependencies/stencil.d.ts +3 -2
- package/dist/dependencies/testSetupFiles.d.ts +1 -9
- package/dist/dependencies/updateLumina.d.ts +4 -4
- package/dist/dependencies/utils.d.ts +2 -2
- package/dist/docs/config.d.ts +1 -1
- package/dist/docs/index.d.ts +2 -2
- package/dist/docs/stencilDocsJson.d.ts +7 -3
- package/dist/docs/vsCodeCustomData/index.d.ts +2 -2
- package/dist/docs/vsCodeCustomData/utils.d.ts +2 -2
- package/dist/docs/webTypes/description.d.ts +1 -1
- package/dist/docs/webTypes/index.d.ts +2 -2
- package/dist/docs/webTypes/utils.d.ts +2 -2
- package/dist/entrypoints/addNonLazyImports.d.ts +2 -2
- package/dist/entrypoints/config.d.ts +1 -0
- package/dist/entrypoints/dtsUtils.d.ts +3 -3
- package/dist/entrypoints/findUtils.d.ts +1 -1
- package/dist/entrypoints/handleComponentImports.d.ts +2 -2
- package/dist/entrypoints/pathMapping.d.ts +1 -1
- package/dist/entrypoints/resolveTagName.d.ts +4 -4
- package/dist/extractor/apiJsonUtils.d.ts +2 -2
- package/dist/extractor/declaration.d.ts +1 -38
- package/dist/extractor/extractor.d.ts +6 -5
- package/dist/extractor/helpers/cssDoc.d.ts +1 -1
- package/dist/extractor/helpers/event.d.ts +3 -3
- package/dist/extractor/helpers/method.d.ts +3 -3
- package/dist/extractor/helpers/property.d.ts +3 -3
- package/dist/extractor/helpers/resolveType.d.ts +3 -3
- package/dist/extractor/helpers/typeValue.d.ts +2 -2
- package/dist/extractor/index.d.ts +3 -3
- package/dist/extractor/parseStoryFiles.d.ts +2 -0
- package/dist/frameworkTypes/index.d.ts +2 -2
- package/dist/frameworkTypes/lumina.d.ts +1 -1
- package/dist/frameworkTypes/preact.d.ts +1 -1
- package/dist/frameworkTypes/react.d.ts +1 -1
- package/dist/frameworkTypes/stencil.d.ts +1 -1
- package/dist/frameworkTypes/utils.d.ts +2 -2
- package/dist/frameworkTypes/vanilla.d.ts +1 -1
- package/dist/index.d.ts +11 -11
- package/dist/index.js +6915 -110
- package/dist/jsxToLitHtml/autoAddNothing.d.ts +2 -2
- package/dist/jsxToLitHtml/comments.d.ts +4 -4
- package/dist/jsxToLitHtml/config.d.ts +1 -1
- package/dist/jsxToLitHtml/convertProps.d.ts +5 -6
- package/dist/jsxToLitHtml/imports.d.ts +2 -3
- package/dist/jsxToLitHtml/index.d.ts +1 -1
- package/dist/jsxToLitHtml/inferPropType.d.ts +3 -3
- package/dist/jsxToLitHtml/insertRepeatCall.d.ts +2 -2
- package/dist/jsxToLitHtml/jsxVisitor.d.ts +3 -4
- package/dist/jsxToLitHtml/templateParts.d.ts +2 -2
- package/dist/jsxToLitHtml/throwOnImportingExternalized.d.ts +1 -1
- package/dist/jsxToLitHtml/types.d.ts +5 -4
- package/dist/jsxToLitHtml/utils.d.ts +1 -0
- package/dist/loader/hideUntilHydrated.d.ts +1 -1
- package/dist/loader/index.d.ts +2 -2
- package/dist/loader/lazy.d.ts +3 -3
- package/dist/loader/storybookApiJson.d.ts +1 -1
- package/dist/logger-KpGU2b3R.js +28 -0
- package/dist/plugins/buildCdn.d.ts +56 -6
- package/dist/plugins/buildStencilHydrate.d.ts +2 -2
- package/dist/plugins/buildWebApp.d.ts +3 -0
- package/dist/plugins/buildWrappers.d.ts +2 -2
- package/dist/plugins/configureVite.d.ts +5 -5
- package/dist/plugins/externalizeDependencies.d.ts +2 -6
- package/dist/plugins/handleDynamicAssets.d.ts +2 -2
- package/dist/plugins/handleStaticAssets.d.ts +2 -2
- package/dist/plugins/loadLitCss.d.ts +2 -6
- package/dist/plugins/printTotalBuildSize.d.ts +2 -2
- package/dist/plugins/provideAssets.d.ts +3 -20
- package/dist/plugins/setAssetsPath.d.ts +2 -2
- package/dist/plugins/updatePackageJson.d.ts +4 -4
- package/dist/publicTypes.d.ts +107 -30
- package/dist/puppeteerTesting/globalSetup.d.ts +2 -2
- package/dist/puppeteerTesting/globalSetup.js +105 -2
- package/dist/puppeteerTesting/index.d.ts +7 -8
- package/dist/puppeteerTesting/index.js +1134 -5
- package/dist/puppeteerTesting/injected.d.ts +1 -1
- package/dist/puppeteerTesting/puppeteer/browser.d.ts +1 -1
- package/dist/puppeteerTesting/puppeteer/element.d.ts +3 -3
- package/dist/puppeteerTesting/puppeteer/events.d.ts +2 -2
- package/dist/puppeteerTesting/puppeteer/page.d.ts +1 -1
- package/dist/puppeteerTesting/puppeteer/types.d.ts +3 -3
- package/dist/puppeteerTesting/vitest/matchers/attributes.d.ts +1 -1
- package/dist/puppeteerTesting/vitest/matchers/classList.d.ts +1 -1
- package/dist/puppeteerTesting/vitest/matchers/events.d.ts +1 -1
- package/dist/puppeteerTesting/vitest/matchers/index.d.ts +13 -13
- package/dist/puppeteerTesting/vitest/matchers/text.d.ts +1 -1
- package/dist/puppeteerTesting/vitest/runner.d.ts +3 -3
- package/dist/puppeteerTesting/vitest/runner.js +50 -1
- package/dist/puppeteerTesting/vitest/types.d.ts +1 -1
- package/dist/testing/index.d.ts +4 -4
- package/dist/testing/index.js +152 -24
- package/dist/testing/mount.d.ts +9 -2
- package/dist/testing/wrapController.d.ts +2 -3
- package/dist/tests/utils.d.ts +3 -3
- package/dist/transformers/index.d.ts +3 -3
- package/dist/transformers/injectRuntimeOptions.d.ts +2 -2
- package/dist/transformers/internalTypeScriptApis.d.ts +2 -2
- package/dist/transformers/liftDecorators.d.ts +1 -1
- package/dist/transformers/members.d.ts +2 -2
- package/dist/transformers/property.d.ts +4 -4
- package/dist/transformers/propertyOptions.d.ts +5 -5
- package/dist/transformers/utils.d.ts +3 -3
- package/dist/types/astTransformers.d.ts +2 -2
- package/dist/types/hideInternalLitElement.d.ts +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/liftSetterTypes.d.ts +2 -3
- package/dist/types/textTransformers.d.ts +2 -2
- package/dist/types/transformComponentMembers.d.ts +1 -1
- package/dist/types-C3YmWTVv.js +13 -0
- package/dist/useLumina.d.ts +1 -1
- package/package.json +14 -13
- package/dist/chunk-6XNX5V4L.js +0 -1
- package/dist/chunk-JFKSI6I7.js +0 -1
- package/dist/context/typeScript.spec.d.ts +0 -1
- package/dist/context/utils.spec.d.ts +0 -1
- package/dist/defaultAssetsUrl.spec.d.ts +0 -1
- package/dist/dependencies/lit.d.ts +0 -2
- package/dist/dependencies/updateLumina.spec.d.ts +0 -1
- package/dist/docs/steniclDocsJson.test.d.ts +0 -1
- package/dist/entrypoints/dtsUtils.spec.d.ts +0 -1
- package/dist/entrypoints/findUtils.spec.d.ts +0 -1
- package/dist/entrypoints/resolveTagName.spec.d.ts +0 -1
- package/dist/extractor/declaration.spec.d.ts +0 -1
- package/dist/extractor/helpers/cssDoc.spec.d.ts +0 -1
- package/dist/extractor/helpers/jsDoc.d.ts +0 -11
- package/dist/extractor/helpers/resolveType.spec.d.ts +0 -1
- package/dist/extractor/helpers/typeValue.spec.d.ts +0 -1
- package/dist/jsxToLitHtml/utils.spec.d.ts +0 -1
- package/dist/loader/lazy.spec.d.ts +0 -1
- package/dist/plugins/buildCdn.spec.d.ts +0 -1
- package/dist/plugins/externalizeDependencies.spec.d.ts +0 -1
- package/dist/plugins/provideAssets.spec.d.ts +0 -1
- package/dist/plugins/updatePackageJson.spec.d.ts +0 -1
- package/dist/types/failOnJsonImport.d.ts +0 -2
package/dist/publicTypes.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import type { LuminaApiExtractor } from "./extractor/extractor";
|
|
1
|
+
import { default as ts } from 'typescript';
|
|
2
|
+
import { Plugin } from 'vite';
|
|
3
|
+
import { build as esbuildBuild } from 'esbuild';
|
|
4
|
+
import { CompilerContext } from './context';
|
|
5
|
+
import { PluginOptions as VitePluginDtsOptions } from 'vite-plugin-dts';
|
|
6
|
+
import { ExternalsOptions as RollupPluginNodeExternalsOptions } from 'rollup-plugin-node-externals';
|
|
7
|
+
import { WebTypesOptions } from './docs/webTypes/types';
|
|
8
|
+
import { VsCodeDocOptions } from './docs/vsCodeCustomData/types';
|
|
9
|
+
import { ApiJson, ApiModule, CopyDocDefinitions } from '@arcgis/api-extractor';
|
|
10
|
+
import { LuminaApiExtractor } from './extractor/extractor';
|
|
12
11
|
/**
|
|
13
12
|
* `useLumina()` returns an array of Vite plugins. The array additionally
|
|
14
13
|
* has a `context` property for accessing the compiler context.
|
|
@@ -71,6 +70,19 @@ export type BuildOptions = {
|
|
|
71
70
|
* Configuration for CDN build.
|
|
72
71
|
*/
|
|
73
72
|
readonly cdn?: BuildCdnOptions;
|
|
73
|
+
/** @deprecated Use Storybook build or separate test app package. */
|
|
74
|
+
readonly webApp?: {
|
|
75
|
+
/**
|
|
76
|
+
* If set, will produce a web app build, based on index.html files and
|
|
77
|
+
* cdn build.
|
|
78
|
+
*
|
|
79
|
+
* @default undefined
|
|
80
|
+
* @example "www"
|
|
81
|
+
* @see [Based on Stencil's www build](https://stenciljs.com/docs/www)
|
|
82
|
+
* @deprecated Use Storybook build or separate test app package.
|
|
83
|
+
*/
|
|
84
|
+
readonly destination?: string;
|
|
85
|
+
};
|
|
74
86
|
/**
|
|
75
87
|
* Options for externalizing or bundling in dependencies.
|
|
76
88
|
*/
|
|
@@ -115,19 +127,39 @@ export type BuildCdnOptions = {
|
|
|
115
127
|
*/
|
|
116
128
|
readonly skip?: boolean;
|
|
117
129
|
/**
|
|
130
|
+
* @deprecated To improve CDN experience and simplify redirect handling,
|
|
131
|
+
* deprecated namespace to use consistent CDN folder and file names.
|
|
132
|
+
*
|
|
133
|
+
* Reference: https://devtopia.esri.com/WebGIS/arcgis-web-components/issues/5051#issuecomment-5482327
|
|
134
|
+
*
|
|
118
135
|
* Determines the CDN folder name and the name of the entrypoint file inside.
|
|
119
136
|
*
|
|
120
137
|
* @default "cdn"
|
|
121
138
|
*/
|
|
122
139
|
readonly namespace?: string;
|
|
123
140
|
/**
|
|
124
|
-
* To produce the CDN build, Lumina takes the
|
|
125
|
-
*
|
|
126
|
-
*
|
|
141
|
+
* To produce the CDN build, Lumina takes the dist/loader.js file and
|
|
142
|
+
* and post-processes it with ESBuild to make it ready for consumption in the
|
|
143
|
+
* browser.
|
|
144
|
+
*
|
|
145
|
+
* You can customize the options passed to ESBuild. Note, some options may
|
|
146
|
+
* conflict with the Lumina build process.
|
|
127
147
|
*
|
|
128
148
|
* @see https://esbuild.github.io/api/#overview
|
|
129
149
|
*/
|
|
130
150
|
readonly esbuildOptions?: Parameters<typeof esbuildBuild>[0];
|
|
151
|
+
/**
|
|
152
|
+
* A callback for mutating CDN chunks before they are written to disk.
|
|
153
|
+
* This callback is for advanced use cases only. The build output may change
|
|
154
|
+
* between Lumina versions without prior notice. Using this callback may
|
|
155
|
+
* corrupt the CDN source map if it is enabled.
|
|
156
|
+
*/
|
|
157
|
+
readonly transformer?: (chunks: Map<string, CdnChunk>, context: CompilerContext) => void;
|
|
158
|
+
};
|
|
159
|
+
export type CdnChunk = {
|
|
160
|
+
code: string;
|
|
161
|
+
isAsync: boolean | undefined;
|
|
162
|
+
oldSingleExportName: string | undefined;
|
|
131
163
|
};
|
|
132
164
|
/**
|
|
133
165
|
* Generic type for the different kinds of wrappers.
|
|
@@ -219,6 +251,24 @@ export type DependencyManagementOptions = Omit<RollupPluginNodeExternalsOptions,
|
|
|
219
251
|
* technical reasons.
|
|
220
252
|
*/
|
|
221
253
|
readonly externalize?: NonNullable<RollupPluginNodeExternalsOptions>["include"];
|
|
254
|
+
/**
|
|
255
|
+
* By default, Lumina will error if it encounters usage of an unknown custom
|
|
256
|
+
* element. This setting allows to silence such error if you are manually
|
|
257
|
+
* importing some custom elements.
|
|
258
|
+
*
|
|
259
|
+
* > [!IMPORTANT]
|
|
260
|
+
* >
|
|
261
|
+
* > This option is an escape hatch. Build-time optimizations are not applied
|
|
262
|
+
* > to such custom elements. Additionally, you assume the responsibility for
|
|
263
|
+
* > correctly loading the web component in lazy, non-lazy and CDN builds.
|
|
264
|
+
*
|
|
265
|
+
* @example
|
|
266
|
+
* ```ts
|
|
267
|
+
* // Silence errors for unknown custom elements that start with "fluent-"
|
|
268
|
+
* silenceUnknownJsxElementUsage: (tagName) => tagName.startsWith("fluent-")
|
|
269
|
+
* ```
|
|
270
|
+
*/
|
|
271
|
+
readonly silenceUnknownJsxElementUsage?: (tagName: string, fileName: string, context: CompilerContext) => boolean;
|
|
222
272
|
};
|
|
223
273
|
export type ServeEnvironmentOptions = {
|
|
224
274
|
/**
|
|
@@ -237,7 +287,13 @@ export type ServeEnvironmentOptions = {
|
|
|
237
287
|
* `index.html`.
|
|
238
288
|
* In such case, you can set `extraDependencies: ["@arcgis/map-components"]`
|
|
239
289
|
*/
|
|
240
|
-
readonly extraDependencies?: string[];
|
|
290
|
+
readonly extraDependencies?: (DetailedExtraDependency | string)[];
|
|
291
|
+
};
|
|
292
|
+
export type DetailedExtraDependency = {
|
|
293
|
+
/** @example "@arcgis/map-config-components" */
|
|
294
|
+
name: string;
|
|
295
|
+
/** @example ():string => `https://example.com/arcgis-components/builds/main/cdn/map-config-components/` */
|
|
296
|
+
getCdnUrl: (context: CompilerContext) => string;
|
|
241
297
|
};
|
|
242
298
|
export type PuppeteerTestingOptions = {
|
|
243
299
|
/**
|
|
@@ -252,9 +308,20 @@ export type PuppeteerTestingOptions = {
|
|
|
252
308
|
* @default 0
|
|
253
309
|
*/
|
|
254
310
|
readonly waitForChangesDelay?: number;
|
|
255
|
-
|
|
311
|
+
/**
|
|
312
|
+
* @example
|
|
313
|
+
* ```ts
|
|
314
|
+
* import type { LaunchOptions } from "puppeteer";
|
|
315
|
+
* // ...
|
|
316
|
+
* launchOptions: {
|
|
317
|
+
* args: ["--no-sandbox", "--disable-setuid-sandbox"],
|
|
318
|
+
* } satisfies LaunchOptions;
|
|
319
|
+
* ```
|
|
320
|
+
*/
|
|
321
|
+
readonly launchOptions?: Record<string, unknown>;
|
|
256
322
|
};
|
|
257
323
|
export type GenerateDocumentationOptions = {
|
|
324
|
+
readonly copyDefinitions?: CopyDocDefinitions;
|
|
258
325
|
/**
|
|
259
326
|
* The name of the file to write the api.json to. api.json is a file format
|
|
260
327
|
* based on custom-elements-manifest that describes all the components in the
|
|
@@ -267,22 +334,39 @@ export type GenerateDocumentationOptions = {
|
|
|
267
334
|
* The name of the file to write the Stencil-like docs JSON to.
|
|
268
335
|
* For backwards compatibility.
|
|
269
336
|
*
|
|
337
|
+
* @deprecated Use api.json instead.
|
|
270
338
|
* @default "docs/docs.json"
|
|
271
339
|
* @see https://stenciljs.com/docs/docs-json
|
|
272
340
|
*/
|
|
273
341
|
readonly stencilLikeDocsJsonFileName?: string | false;
|
|
342
|
+
/**
|
|
343
|
+
* Get a prefix for a public-facing URL for each component story.
|
|
344
|
+
*
|
|
345
|
+
* @example
|
|
346
|
+
* Set this to "https://developers.arcgis.com/javascript/latest/storybook/map-components/".
|
|
347
|
+
* This will produce URLs like
|
|
348
|
+
* "https://developers.arcgis.com/javascript/latest/storybook/map-components/?path=/story/arcgis-area-measurement-2d--demo&singleStory=true"
|
|
349
|
+
* @see https://qawebgis.esri.com/components/lumina/storybook
|
|
350
|
+
*/
|
|
351
|
+
readonly publicStoryUrlPrefix?: string;
|
|
274
352
|
/**
|
|
275
353
|
* Provide a URL to a page that documents the component.
|
|
276
354
|
* This URL will be visible in VS Code and IntelliJ when hovering over a
|
|
277
355
|
* component tag in an .html file
|
|
356
|
+
*
|
|
357
|
+
* @example (tagName) => `https://developers.arcgis.com/javascript/latest/references/map-components/${tagName}/`
|
|
278
358
|
*/
|
|
279
|
-
readonly getComponentDocsUrl?: (
|
|
359
|
+
readonly getComponentDocsUrl?: (tagName: string, className: string) => string | undefined;
|
|
280
360
|
/**
|
|
281
361
|
* Provide a URL to a page that documents the component.
|
|
282
362
|
* This URL will be visible in VS Code and IntelliJ when hovering over a
|
|
283
363
|
* component tag in an .html file
|
|
364
|
+
*
|
|
365
|
+
* If you wish to provide multiple URLs, use "getPublicStoryUrl" instead.
|
|
366
|
+
*
|
|
367
|
+
* @example (tagName) => `https://developers.arcgis.com/javascript/latest/storybook/map-components/?path=/story/${tagName}--demo&singleStory=true`
|
|
284
368
|
*/
|
|
285
|
-
readonly getComponentDemoUrl?: (
|
|
369
|
+
readonly getComponentDemoUrl?: (tagName: string, className: string) => string | undefined;
|
|
286
370
|
/**
|
|
287
371
|
* Additional options for web component documentation for VS Code. This
|
|
288
372
|
* documentation provides intellisense when editing .html and .css files.
|
|
@@ -328,7 +412,7 @@ export type GenerateTypesOptions = Omit<VitePluginDtsOptions, "beforeWriteFile"
|
|
|
328
412
|
* This transformer is used only on .d.ts files of your components. Any
|
|
329
413
|
* .d.ts files for utility files or other non-entrypoint files are not
|
|
330
414
|
* affected by this transformer. For those, you can use the
|
|
331
|
-
* `
|
|
415
|
+
* `declarationTextTransformers` option.
|
|
332
416
|
*/
|
|
333
417
|
readonly declarationAstTransformers?: FileTransformer[];
|
|
334
418
|
/**
|
|
@@ -407,7 +491,7 @@ export type ApiJsonOptions = {
|
|
|
407
491
|
*
|
|
408
492
|
* @default LuminaApiExtractor
|
|
409
493
|
*/
|
|
410
|
-
readonly Extractor
|
|
494
|
+
readonly Extractor?: typeof LuminaApiExtractor;
|
|
411
495
|
/**
|
|
412
496
|
* This function will be called after the api.json is created but before it is
|
|
413
497
|
* used to generate any output files.
|
|
@@ -645,14 +729,14 @@ export type AssetTransformer = {
|
|
|
645
729
|
};
|
|
646
730
|
export type LintingOptions = {
|
|
647
731
|
/**
|
|
648
|
-
* Lumina
|
|
732
|
+
* Lumina includes build-time checks for common issues and possible bugs.
|
|
649
733
|
* Most of those should be immediately addressable. However, some (like
|
|
650
734
|
* updating default value for boolean properties) may require a breaking
|
|
651
735
|
* change.
|
|
652
736
|
*
|
|
653
|
-
* This option exists to
|
|
737
|
+
* This option exists to temporarily turn these errors into warnings.
|
|
654
738
|
* @example
|
|
655
|
-
* To silence an error in a file, add an entry like
|
|
739
|
+
* To silence an error in a file, add an entry like the following with the
|
|
656
740
|
* relative path to the file:
|
|
657
741
|
*
|
|
658
742
|
* ```ts
|
|
@@ -660,13 +744,6 @@ export type LintingOptions = {
|
|
|
660
744
|
* ```
|
|
661
745
|
*/
|
|
662
746
|
silence: {
|
|
663
|
-
/**
|
|
664
|
-
* Default values for boolean properties must default to false (or
|
|
665
|
-
* undefined), never to true.
|
|
666
|
-
*
|
|
667
|
-
* [Documentation](https://qawebgis.esri.com/components/lumina/properties#boolean-properties)
|
|
668
|
-
*/
|
|
669
|
-
booleanMustDefaultFalse?: string[];
|
|
670
747
|
/**
|
|
671
748
|
* Lumina components may declare required properties using `@required` JSDoc
|
|
672
749
|
* tag.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import { GlobalSetupContext } from 'vitest/dist/node.js';
|
|
2
|
+
import { ConnectOptions } from 'puppeteer';
|
|
3
3
|
declare module "vitest" {
|
|
4
4
|
interface ProvidedContext {
|
|
5
5
|
isDevToolsEnabled?: boolean;
|
|
@@ -1,4 +1,95 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { launch as i } from "puppeteer";
|
|
2
|
+
import { createServer as l } from "vite";
|
|
3
|
+
async function h(r) {
|
|
4
|
+
process.cwd() !== r.config.root && process.chdir(r.config.root);
|
|
5
|
+
const [o, e] = await Promise.all([c(r), d(r)]);
|
|
6
|
+
return async () => {
|
|
7
|
+
await Promise.all([e.close(), o.close()]), setInterval(() => {
|
|
8
|
+
e.watcher.close();
|
|
9
|
+
}, 100).unref();
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
async function c(r) {
|
|
13
|
+
const o = r.config, e = o.puppeteerLaunchOptions ?? {}, t = 1e3 * 60 * 60, s = {
|
|
14
|
+
acceptInsecureCerts: !0,
|
|
15
|
+
/**
|
|
16
|
+
* Allow stopping on a "debugger;" breakpoint for 30 min. Default was 3min.
|
|
17
|
+
*/
|
|
18
|
+
protocolTimeout: e.devtools ? t : void 0,
|
|
19
|
+
/**
|
|
20
|
+
* Force animations to be enabled to run tests consistently regardless of OS
|
|
21
|
+
* settings.
|
|
22
|
+
*/
|
|
23
|
+
args: ["--force-prefers-no-reduced-motion", ...e.args ?? []],
|
|
24
|
+
...e,
|
|
25
|
+
/**
|
|
26
|
+
* The "new" headless mode is running very slow when you have multiple
|
|
27
|
+
* browser tabs open (running tests concurrently). The slowdown seems to be
|
|
28
|
+
* most prominent around `requestAnimationFrame()`, which sometimes takes
|
|
29
|
+
* up to 15s! It indeed appears that `requestAnimationFrame()` is one tab
|
|
30
|
+
* is blocked until several other tabs complete and close.
|
|
31
|
+
*
|
|
32
|
+
* All these issues are fixed by using the old headless mode. It is marked
|
|
33
|
+
* to be removed from Puppeteer in 2024. However, we are looking to migrate
|
|
34
|
+
* away from Puppeteer toward Vitest Browser Mode (Playwright) anyway.
|
|
35
|
+
*
|
|
36
|
+
* See:
|
|
37
|
+
* - https://github.com/puppeteer/puppeteer/issues/11944#issuecomment-1967860373
|
|
38
|
+
* - https://github.com/puppeteer/puppeteer/issues/10109
|
|
39
|
+
* - https://github.com/puppeteer/puppeteer/issues/12982
|
|
40
|
+
*/
|
|
41
|
+
headless: e.headless ?? (e.devtools ? void 0 : "shell")
|
|
42
|
+
}, n = await i(s), a = { ...s, browserWSEndpoint: n.wsEndpoint() };
|
|
43
|
+
return r.provide("puppeteerConnectOptions", a), r.provide("isDevToolsEnabled", s.devtools ?? !1), r.provide(
|
|
44
|
+
"isHeadlessBrowser",
|
|
45
|
+
/**
|
|
46
|
+
* Default value for headless depends on devtools argument:
|
|
47
|
+
* https://github.com/puppeteer/puppeteer/blob/b5f08d55401dcfbcfd5d885920ec5098f96ab249/packages/puppeteer-core/src/node/ChromeLauncher.ts#L241-L242
|
|
48
|
+
*/
|
|
49
|
+
e.headless === void 0 ? e.devtools !== !0 : e.headless !== !1
|
|
50
|
+
), r.provide("puppeteerWaitForChangesDelay", o.puppeteerWaitForChangesDelay), n;
|
|
51
|
+
}
|
|
52
|
+
async function d(r) {
|
|
53
|
+
const o = {
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
55
|
+
__IS_IN_PUPPETEER__: !0
|
|
56
|
+
}, e = await l({
|
|
57
|
+
/**
|
|
58
|
+
* Do not clutter tests console with Vite logs.
|
|
59
|
+
* Also, this matches the setting that Vitest uses when it starts up Vite.
|
|
60
|
+
*/
|
|
61
|
+
logLevel: "error",
|
|
62
|
+
server: {
|
|
63
|
+
/**
|
|
64
|
+
* Vitest should not auto-open the page (as it would do so in the default
|
|
65
|
+
* browser). Instead, if you want to see the page, you should start
|
|
66
|
+
* puppeteer in headed mode, which will open the browser for you.
|
|
67
|
+
*/
|
|
68
|
+
open: !1,
|
|
69
|
+
/**
|
|
70
|
+
* On code changes, browser page reloading will cause a Puppeteer page
|
|
71
|
+
* navigation, which will fail the test. Instead of HMR, use Vitest
|
|
72
|
+
* watch mode.
|
|
73
|
+
*/
|
|
74
|
+
hmr: !1
|
|
75
|
+
},
|
|
76
|
+
/**
|
|
77
|
+
* This should be process.cwd() in most cases, but setting in here just in
|
|
78
|
+
* case
|
|
79
|
+
*/
|
|
80
|
+
root: r.config.root,
|
|
81
|
+
// Set mode to "test"
|
|
82
|
+
mode: r.config.mode,
|
|
83
|
+
// This interferes with the Vitest output
|
|
84
|
+
clearScreen: !1,
|
|
85
|
+
define: o
|
|
86
|
+
});
|
|
87
|
+
return await e.listen(), await v(r, e), p(r, e), e;
|
|
88
|
+
}
|
|
89
|
+
async function v(r, o) {
|
|
90
|
+
const e = await o.transformIndexHtml(
|
|
91
|
+
"/",
|
|
92
|
+
`<!doctype html>
|
|
2
93
|
<html lang="en">
|
|
3
94
|
<head>
|
|
4
95
|
<meta charset="utf-8" />
|
|
@@ -8,4 +99,16 @@ import"../chunk-JFKSI6I7.js";import{launch as l}from"puppeteer";import{createSer
|
|
|
8
99
|
</head>
|
|
9
100
|
<body>
|
|
10
101
|
</body>
|
|
11
|
-
</html>`
|
|
102
|
+
</html>`
|
|
103
|
+
);
|
|
104
|
+
r.provide("devServerHtml", e);
|
|
105
|
+
}
|
|
106
|
+
function p(r, o) {
|
|
107
|
+
const e = o.resolvedUrls, t = e?.local.at(0) ?? e?.network.at(0);
|
|
108
|
+
if (t === void 0)
|
|
109
|
+
throw new Error("Failed to resolve the dev server URL");
|
|
110
|
+
r.provide("devServerUrl", t);
|
|
111
|
+
}
|
|
112
|
+
export {
|
|
113
|
+
h as setup
|
|
114
|
+
};
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
export type
|
|
4
|
-
export
|
|
5
|
-
export {
|
|
6
|
-
export type {
|
|
7
|
-
export
|
|
8
|
-
export { setupPuppeteerTest } from "./vitest/setupFile";
|
|
1
|
+
import { PuppeteerMatchers } from './vitest/matchers';
|
|
2
|
+
export type * from './puppeteer/types';
|
|
3
|
+
export type { NewE2EPageOptions } from './puppeteer/page';
|
|
4
|
+
export { newE2EPage } from './puppeteer/page';
|
|
5
|
+
export type { E2EElement } from './puppeteer/element';
|
|
6
|
+
export type { EventSpy } from './puppeteer/events';
|
|
7
|
+
export { setupPuppeteerTest } from './vitest/setupFile';
|
|
9
8
|
declare module "vitest" {
|
|
10
9
|
interface Assertion<T = any> extends PuppeteerMatchers<T> {
|
|
11
10
|
}
|