@arcgis/lumina-compiler 4.34.0-next.12 → 4.34.0-next.121
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/LICENSE.md +1 -1
- package/README.md +2 -10
- package/dist/context/index.d.ts +3 -2
- package/dist/dependencies/arcgisCore.d.ts +1 -1
- package/dist/dependencies/discover.d.ts +5 -1
- package/dist/dependencies/lumina.d.ts +1 -1
- package/dist/dependencies/stencil.d.ts +2 -2
- package/dist/dependencies/updateLumina.d.ts +3 -3
- package/dist/entrypoints/resolveTagName.d.ts +1 -1
- package/dist/index.js +2048 -2058
- package/dist/jsxToLitHtml/importsConfig.d.ts +10 -0
- package/dist/jsxToLitHtml/types.d.ts +4 -2
- package/dist/loader/{hideUntilHydrated.d.ts → css.d.ts} +6 -1
- package/dist/plugins/buildCdn.d.ts +6 -0
- package/dist/plugins/loadLitCss.d.ts +52 -11
- package/dist/publicTypes.d.ts +49 -112
- package/dist/puppeteerTesting/vitest/matchers/index.d.ts +12 -12
- package/dist/testing/index.js +3 -3
- package/dist/testing/mount.d.ts +2 -2
- package/dist/testing/vitestTypes.d.ts +8 -0
- package/dist/transformers/injectRuntimeOptions.d.ts +12 -2
- package/dist/transformers/internalTypeScriptApis.d.ts +4 -1
- package/dist/transformers/utils.d.ts +0 -6
- package/package.json +20 -17
- package/dist/jsxToLitHtml/escapeForTemplateLiteral.d.ts +0 -45
- package/dist/plugins/buildStencilHydrate.d.ts +0 -16
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { JsxImportName } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Most Lit API's are re-exported from multiple packages. Because only Lit
|
|
4
|
+
* package is declared as an explicit dependency, Lumina's auto-inserted imports
|
|
5
|
+
* should only import from the Lit package (from the first import path in the
|
|
6
|
+
* lists below). However, to avoid double-importing things if the file already
|
|
7
|
+
* imports these APIs from another package, we need to check for all the places
|
|
8
|
+
* that export these APIs (the 2nd+ items in the lists below).
|
|
9
|
+
*/
|
|
10
|
+
export declare const dynamicallyInsertedImportsByName: Record<JsxImportName, string[]>;
|
|
@@ -63,10 +63,12 @@ export declare const ambiguousSvgTag: unique symbol;
|
|
|
63
63
|
export declare const cssTag = "css";
|
|
64
64
|
export declare const mathMlTag = "mathml";
|
|
65
65
|
declare const litTagsArray: readonly ["css", "html", "mathml", "staticHtml", "staticSvg", "svg"];
|
|
66
|
-
export declare const litTags: Set<"html" | "
|
|
66
|
+
export declare const litTags: Set<"html" | "svg" | "css" | "mathml" | "staticHtml" | "staticSvg">;
|
|
67
67
|
export type LitTag = (typeof litTagsArray)[number];
|
|
68
|
-
export declare const jsxImportNames: readonly ["keyed", "ref", "repeat", "live", "css", "html", "mathml", "staticHtml", "staticSvg", "svg", "safeClassMap", "safeStyleMap", "deferLoad", "nothing"];
|
|
68
|
+
export declare const jsxImportNames: readonly ["keyed", "ref", "repeat", "live", "css", "html", "mathml", "staticHtml", "staticSvg", "svg", "safeClassMap", "safeStyleMap", "deferLoad", "stabilizedRef", "nothing"];
|
|
69
69
|
export type JsxImportName = (typeof jsxImportNames)[number];
|
|
70
70
|
export type JsxHost = ts.JsxElement | ts.JsxFragment | ts.JsxSelfClosingElement;
|
|
71
|
+
/** Returns `true` if the given node is an array expression containing jsx nodes */
|
|
72
|
+
export declare const isJsxArray: (node: ts.Node) => node is ts.ArrayLiteralExpression;
|
|
71
73
|
export declare const isJsxHost: (node: ts.Node) => node is JsxHost;
|
|
72
74
|
export {};
|
|
@@ -9,7 +9,12 @@ export declare const defaultHydratedAttribute = "hydrated";
|
|
|
9
9
|
* @see https://discord.com/channels/1012791295170859069/1274527043614150708
|
|
10
10
|
*/
|
|
11
11
|
export declare function getGlobalCssInjectionCode(globalCssString: string | undefined, context: CompilerContext): string;
|
|
12
|
-
/**
|
|
12
|
+
/**a
|
|
13
13
|
* Get a CSS string that can be printed into a .css file
|
|
14
|
+
*
|
|
15
|
+
* Global CSS is auto-imported by bundlers. To ensure it is always loaded with
|
|
16
|
+
* lower precedence order than user styles, we wrap it in `@layer{}`.
|
|
17
|
+
*
|
|
18
|
+
* @see https://devtopia.esri.com/WebGIS/arcgis-web-components/discussions/1824#discussioncomment-12625
|
|
14
19
|
*/
|
|
15
20
|
export declare const getGlobalCssAsString: (context: CompilerContext) => string;
|
|
@@ -65,7 +65,13 @@ export declare function buildLoaderCode(runtimeVariableName: string, customEntry
|
|
|
65
65
|
* ```
|
|
66
66
|
*/
|
|
67
67
|
declare function transformChunk(chunk: CdnChunk, chunks: Map<string, CdnChunk>): void;
|
|
68
|
+
/**
|
|
69
|
+
* Given set of identifiers, produce the shortest possible ASCII-only identifier.
|
|
70
|
+
* We restrict to ASCII-range as it is faster to parse for engines.
|
|
71
|
+
*/
|
|
72
|
+
declare function createIdentifierGenerator(seen: Set<string>): () => string;
|
|
68
73
|
export declare const exportsForTests: {
|
|
69
74
|
transformChunk: typeof transformChunk;
|
|
75
|
+
createIdentifierGenerator: typeof createIdentifierGenerator;
|
|
70
76
|
};
|
|
71
77
|
export {};
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import { Plugin } from 'vite';
|
|
2
2
|
import { CompilerContext } from '../context';
|
|
3
|
+
/**
|
|
4
|
+
* CSS extension list taken from https://github.com/vitejs/vite/blob/a8c7083a3d7d7fe2e83e994ff008f39ee4f298f8/packages/vite/src/node/constants.ts#L50
|
|
5
|
+
*/
|
|
3
6
|
export declare const cssLangsRe: RegExp;
|
|
7
|
+
/**
|
|
8
|
+
* A flag added by Lumina at compile time to named CSS imports to turn
|
|
9
|
+
* them into Lit css`` tagged template literals (using `styles` named import).
|
|
10
|
+
*
|
|
11
|
+
* We do not automatically process every CSS file to allow for both:
|
|
12
|
+
* - keeping side-effect CSS imports inside external library code as is
|
|
13
|
+
* - tricky to do using resolveId() because ESBuild is used for some files in
|
|
14
|
+
* dev server.
|
|
15
|
+
* - explicitly importing external library's CSS as Lit css into shadow root
|
|
16
|
+
* - example: monaco or ckeditor styles, but attached into shadow root, rather
|
|
17
|
+
* than global
|
|
18
|
+
*/
|
|
19
|
+
export declare const litCssFlag = "?litCss";
|
|
4
20
|
/**
|
|
5
21
|
* The `.adoptedStyleSheets` API is very convenient, but it has one issue: it
|
|
6
22
|
* has higher precedence order than the `<link>` or `<style>` tags. This API was
|
|
@@ -12,18 +28,42 @@ export declare const cssLangsRe: RegExp;
|
|
|
12
28
|
* More information:
|
|
13
29
|
* https://discord.com/channels/1012791295170859069/1274527043614150708
|
|
14
30
|
*/
|
|
15
|
-
export declare const
|
|
31
|
+
export declare const layeredLitCssFlag = "?layeredLitCss";
|
|
16
32
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
33
|
+
* Vite's library mode has CSS support (https://vite.dev/guide/build.html#css-support).
|
|
34
|
+
* However, if global css file references assets, the library mode will insert
|
|
35
|
+
* the assets base path in the CSS file. This does not work for us since the
|
|
36
|
+
* asset path is determined at runtime - provided by the user.
|
|
37
|
+
*
|
|
38
|
+
* Additionally, Vite's library mode css handling does not quite fit our use case:
|
|
39
|
+
* - We need to transform the global CSS to add hydrate CSS
|
|
40
|
+
* - Trickier given that we need to emit hydrate CSS even if user did not
|
|
41
|
+
* provide global css
|
|
42
|
+
* - Vite has css chunking support, which we don't need
|
|
43
|
+
* - We need to add an import for our CSS file (and those of libraries we are
|
|
44
|
+
* consuming) in runtime.ts, without processing the external CSS files
|
|
45
|
+
*
|
|
46
|
+
* It is possible to make Vite's library mode css work, but requires too much
|
|
47
|
+
* effort. Instead, we are bypassing Vite's global CSS handling and doing the
|
|
48
|
+
* simple handling sufficient for our single global css file:
|
|
49
|
+
* - During build, we insert a import into the loader.ts file purely
|
|
50
|
+
* so that the transform() is triggered for that file so that we can piggy back
|
|
51
|
+
* on the transformed output (and create a separate .css file out of it).
|
|
52
|
+
* Such import has no side-effects and is removed by Rollup.
|
|
53
|
+
*
|
|
54
|
+
* This is the only way to trigger the CSS transform without getting it added
|
|
55
|
+
* to the bundle because of this Vite behavior:
|
|
56
|
+
* https://github.com/vitejs/vite/pull/11469#:~:text=Further%2C%20this.load%20is%20supposed%20to%20trigger%20transform%20and%20moduleParsed%20%2D%20this%20does%20not%20(in%20accordance%20with%20vite%27s%20on%2Ddemand%20nature
|
|
57
|
+
* - We manually write dist/main.css based on hydrate CSS and global CSS.
|
|
58
|
+
* - During generateBundle() stage, we transform the emitted chunks/runtime.js
|
|
59
|
+
* to add the import to global CSS for our library and web component libraries
|
|
60
|
+
* we are consuming. We do this in generateBundle() stage so that such imports
|
|
61
|
+
* are not processed by bundler. Additionally, our loadLitCss plugin's
|
|
62
|
+
* transform() has a detection of side-effect CSS imports to error for them
|
|
63
|
+
* saying they should be import as named to be added to the shadow root - by
|
|
64
|
+
* doing this in generateBundle(), we bypass that check.
|
|
25
65
|
*/
|
|
26
|
-
export declare const
|
|
66
|
+
export declare const globalCssFileFlag = "?globalFileLitCss";
|
|
27
67
|
/**
|
|
28
68
|
* Given a CSS file like:
|
|
29
69
|
*
|
|
@@ -56,7 +96,7 @@ export declare const globalCssFlag = "?global";
|
|
|
56
96
|
*
|
|
57
97
|
* Then, we augment it into this:
|
|
58
98
|
* ```js
|
|
59
|
-
* import { css } from '
|
|
99
|
+
* import { css } from 'lit/css-tag.js';
|
|
60
100
|
* const styles = css`:host{display:flex;gap:1rem}button{padding:1rem}`;
|
|
61
101
|
* export default styles;
|
|
62
102
|
* ```
|
|
@@ -84,3 +124,4 @@ export declare const globalCssFlag = "?global";
|
|
|
84
124
|
* will be inlined as base64 to simplify our life.
|
|
85
125
|
*/
|
|
86
126
|
export declare const loadLitCss: (context: CompilerContext) => Plugin;
|
|
127
|
+
export declare function viteCssModuleToLit(code: string, withHmr: boolean, minify: boolean, isLayered: boolean): string;
|
package/dist/publicTypes.d.ts
CHANGED
|
@@ -3,9 +3,9 @@ import { Plugin } from 'vite';
|
|
|
3
3
|
import { build as esbuildBuild } from 'esbuild';
|
|
4
4
|
import { CompilerContext } from './context';
|
|
5
5
|
import { PluginOptions as VitePluginDtsOptions } from 'vite-plugin-dts';
|
|
6
|
-
import { ExternalsOptions as RollupPluginNodeExternalsOptions } from 'rollup-plugin-node-externals';
|
|
7
6
|
import { WebTypesOptions } from './docs/webTypes/types';
|
|
8
7
|
import { VsCodeDocOptions } from './docs/vsCodeCustomData/types';
|
|
8
|
+
import { DependencyManagementOptions as BaseDependencyManagementOptions } from '@arcgis/components-build-utils';
|
|
9
9
|
import { ApiJson, ApiModule, CopyDocDefinitions } from '@arcgis/api-extractor';
|
|
10
10
|
import { LuminaApiExtractor } from './extractor/extractor';
|
|
11
11
|
/**
|
|
@@ -64,6 +64,10 @@ export type LuminaOptions = {
|
|
|
64
64
|
*/
|
|
65
65
|
readonly assets?: AssetHandlingOptions;
|
|
66
66
|
readonly linting?: LintingOptions;
|
|
67
|
+
readonly experimental?: {
|
|
68
|
+
/** @deprecated See https://discord.com/channels/1012791295170859069/1047015641225371718 */
|
|
69
|
+
readonly stabilizeRef?: boolean;
|
|
70
|
+
};
|
|
67
71
|
};
|
|
68
72
|
export type BuildOptions = {
|
|
69
73
|
/**
|
|
@@ -79,9 +83,13 @@ export type BuildOptions = {
|
|
|
79
83
|
* @default undefined
|
|
80
84
|
* @example "www"
|
|
81
85
|
* @see [Based on Stencil's www build](https://stenciljs.com/docs/www)
|
|
82
|
-
* @deprecated Use Storybook build or separate test app package.
|
|
86
|
+
* @deprecated Use Storybook build or a separate test app package.
|
|
83
87
|
*/
|
|
84
88
|
readonly destination?: string;
|
|
89
|
+
/** @deprecated Use Storybook build or a separate test app package. */
|
|
90
|
+
readonly transformFile?: (htmlContent: string, htmlFilePath: string, context: CompilerContext) => string;
|
|
91
|
+
/** @deprecated Use Storybook build or a separate test app package. */
|
|
92
|
+
readonly afterBuildEnd?: (context: CompilerContext) => Promise<void> | void;
|
|
85
93
|
};
|
|
86
94
|
/**
|
|
87
95
|
* Options for externalizing or bundling in dependencies.
|
|
@@ -113,7 +121,6 @@ export type BuildOptions = {
|
|
|
113
121
|
* Wrappers to generate.
|
|
114
122
|
*/
|
|
115
123
|
readonly wrappers?: WrappersOptions[];
|
|
116
|
-
readonly ssr?: SsrOptions;
|
|
117
124
|
};
|
|
118
125
|
export type BuildCdnOptions = {
|
|
119
126
|
/**
|
|
@@ -158,6 +165,11 @@ export type BuildCdnOptions = {
|
|
|
158
165
|
};
|
|
159
166
|
export type CdnChunk = {
|
|
160
167
|
code: string;
|
|
168
|
+
/**
|
|
169
|
+
* Whether chunk is currently being processed. Used to detect cyclical imports.
|
|
170
|
+
* @private
|
|
171
|
+
*/
|
|
172
|
+
isProcessing: boolean;
|
|
161
173
|
isAsync: boolean | undefined;
|
|
162
174
|
oldSingleExportName: string | undefined;
|
|
163
175
|
};
|
|
@@ -168,32 +180,6 @@ export type CdnChunk = {
|
|
|
168
180
|
* https://devtopia.esri.com/WebGIS/arcgis-web-components/discussions/1281
|
|
169
181
|
*/
|
|
170
182
|
export type WrappersOptions = React18WrapperOptions;
|
|
171
|
-
export type SsrOptions = {
|
|
172
|
-
/**
|
|
173
|
-
* Emit output compatible with Stencil's dist-hydrate-script build.
|
|
174
|
-
*
|
|
175
|
-
* @deprecated
|
|
176
|
-
* This option should be used to smooth the migration path from Stencil.
|
|
177
|
-
* You should instruct your SSR users to migrate to Lit's SSR implementation,
|
|
178
|
-
* and then stop using this option.
|
|
179
|
-
*
|
|
180
|
-
* @see https://stenciljs.com/docs/hydrate-app
|
|
181
|
-
* @see https://lit.dev/docs/ssr/overview/
|
|
182
|
-
*/
|
|
183
|
-
readonly stencilCompatibility?: {
|
|
184
|
-
/**
|
|
185
|
-
* @default false
|
|
186
|
-
*/
|
|
187
|
-
enabled?: boolean;
|
|
188
|
-
/**
|
|
189
|
-
* By default, the hydrate directory is output to package root, outside
|
|
190
|
-
* of dist.
|
|
191
|
-
*
|
|
192
|
-
* @default "hydrate"
|
|
193
|
-
*/
|
|
194
|
-
path?: string;
|
|
195
|
-
};
|
|
196
|
-
};
|
|
197
183
|
/**
|
|
198
184
|
* Options for creating React 18 wrapper.
|
|
199
185
|
*
|
|
@@ -211,46 +197,31 @@ export type React18WrapperOptions = {
|
|
|
211
197
|
/**
|
|
212
198
|
* Options for externalizing dependencies.
|
|
213
199
|
*
|
|
214
|
-
* Reuse the options from rollup-plugin-node-externals, but rename two options for clarity.
|
|
215
|
-
* - `include` is renamed to `externalize` to make it clear that these are externalized
|
|
216
|
-
* - `exclude` is renamed to `bundleIn` to make it clear that these are bundled in
|
|
217
|
-
*
|
|
218
|
-
* @see https://www.npmjs.com/package/rollup-plugin-node-externals
|
|
219
|
-
*
|
|
220
200
|
* @remarks
|
|
221
201
|
* If Vite is running under Storybook, these options are ignored. This is
|
|
222
202
|
* because in Storybook build, unlike in a library build, we want to bundle in
|
|
223
203
|
* all dependencies (with exception of @arcgis/core and web component
|
|
224
204
|
* dependencies, which are loaded using the ESM CDN).
|
|
225
205
|
*/
|
|
226
|
-
export type DependencyManagementOptions =
|
|
206
|
+
export type DependencyManagementOptions = BaseDependencyManagementOptions & {
|
|
227
207
|
/**
|
|
228
|
-
*
|
|
229
|
-
*
|
|
208
|
+
* By default, Lumina will error if it encounters usage of an unknown custom
|
|
209
|
+
* element. This setting allows to silence such error if you are manually
|
|
210
|
+
* importing some custom elements.
|
|
230
211
|
*
|
|
231
|
-
*
|
|
232
|
-
*
|
|
233
|
-
*
|
|
234
|
-
* such
|
|
235
|
-
*
|
|
236
|
-
*
|
|
237
|
-
* - If TypeScript types from the bundled in dependencies are referenced in
|
|
238
|
-
* the `.d.ts` files of your library, you will need to declare the package
|
|
239
|
-
* as a `dependency`, so that it is still installed on the consumer's
|
|
240
|
-
* computer so that TypeScript can correctly resolve the types of that
|
|
241
|
-
* library.
|
|
242
|
-
*/
|
|
243
|
-
readonly bundleIn?: NonNullable<RollupPluginNodeExternalsOptions>["exclude"];
|
|
244
|
-
/**
|
|
245
|
-
* Force externalize these dependencies, even if they are declared as
|
|
246
|
-
* devDependencies.
|
|
212
|
+
* > [!IMPORTANT]
|
|
213
|
+
* >
|
|
214
|
+
* > This option is an escape hatch. Build-time optimizations are not applied
|
|
215
|
+
* > to such custom elements. Additionally, you assume the responsibility for
|
|
216
|
+
* > correctly loading the web component in lazy, non-lazy and CDN builds.
|
|
247
217
|
*
|
|
248
218
|
* @example
|
|
249
|
-
*
|
|
250
|
-
*
|
|
251
|
-
*
|
|
219
|
+
* ```ts
|
|
220
|
+
* // Silence errors for unknown custom elements that start with "fluent-"
|
|
221
|
+
* silenceUnknownJsxElementUsage: (tagName) => tagName.startsWith("fluent-")
|
|
222
|
+
* ```
|
|
252
223
|
*/
|
|
253
|
-
readonly
|
|
224
|
+
readonly silenceUnknownJsxElementUsage?: (tagName: string, fileName: string, context: CompilerContext) => boolean;
|
|
254
225
|
};
|
|
255
226
|
export type ServeEnvironmentOptions = {
|
|
256
227
|
/**
|
|
@@ -274,7 +245,11 @@ export type ServeEnvironmentOptions = {
|
|
|
274
245
|
export type DetailedExtraDependency = {
|
|
275
246
|
/** @example "@arcgis/map-config-components" */
|
|
276
247
|
name: string;
|
|
277
|
-
/**
|
|
248
|
+
/**
|
|
249
|
+
* Overwrite the default CDN asset path for this dependency.
|
|
250
|
+
*
|
|
251
|
+
* @example (): string => `https://example.com/arcgis-components/builds/main/cdn/map-config-components/`
|
|
252
|
+
*/
|
|
278
253
|
getCdnUrl: (context: CompilerContext) => string;
|
|
279
254
|
};
|
|
280
255
|
export type PuppeteerTestingOptions = {
|
|
@@ -537,65 +512,27 @@ export type CssHandlingOptions = {
|
|
|
537
512
|
* @default "hydrated"
|
|
538
513
|
*/
|
|
539
514
|
hydratedAttribute?: string;
|
|
540
|
-
/**
|
|
541
|
-
* By default, if a side effect CSS import is detected, an error will thrown.
|
|
542
|
-
* This is due to the requirement of handling shadow DOM styling.
|
|
543
|
-
* Instead, you should import the "styles" variable from the .css file and add
|
|
544
|
-
* it to your component.
|
|
545
|
-
*
|
|
546
|
-
* If there is a side effect CSS import from a file you don't control (i.e a
|
|
547
|
-
* library you are using), then assign this property to a function that would
|
|
548
|
-
* return "drop" to ignore those imports. In such case, you will be
|
|
549
|
-
* responsible for manually providing the styles to the web component.
|
|
550
|
-
*
|
|
551
|
-
* If neither of these is satisfactory, a more complex solution can be
|
|
552
|
-
* implemented in the future.
|
|
553
|
-
*
|
|
554
|
-
* @remarks
|
|
555
|
-
* In regular codebases, it's common to have an import statement like so:
|
|
556
|
-
* ```ts
|
|
557
|
-
* import 'some-library/styles.css';
|
|
558
|
-
* ```
|
|
559
|
-
*
|
|
560
|
-
* Doing so in a web component codebase is a bit trickier as the styles
|
|
561
|
-
* need to be attached not to the `<head>` of the page, but to the shadow
|
|
562
|
-
* root of the component that imported it. Doing so for transitive imports
|
|
563
|
-
* is even trickier (if your component imported a .js file, which in turn
|
|
564
|
-
* imported a .css file) as dependency tracking becomes necessary.
|
|
565
|
-
*
|
|
566
|
-
* That is why, for now, css imports need to be handled like so:
|
|
567
|
-
*
|
|
568
|
-
* - If import is originating from a file you control (your component file),
|
|
569
|
-
* import the "styles" variable from the css file:
|
|
570
|
-
*
|
|
571
|
-
* ```ts
|
|
572
|
-
* import { styles } from 'some-library/styles.css';
|
|
573
|
-
* ```
|
|
574
|
-
*
|
|
575
|
-
* And then add it to your component
|
|
576
|
-
*
|
|
577
|
-
* ```ts
|
|
578
|
-
* export class MyComponent extends LitElement {
|
|
579
|
-
* static override styles = styles;
|
|
580
|
-
* }
|
|
581
|
-
* ```
|
|
582
|
-
*
|
|
583
|
-
* - If the import is originating from a file you don't control (i.e a library
|
|
584
|
-
* code), you have to set this property to a function that will return
|
|
585
|
-
* "drop" for a given library import to ignore such import, and then you
|
|
586
|
-
* will have to manually provide the CSS file by importing "styles"
|
|
587
|
-
* variable.
|
|
588
|
-
*
|
|
589
|
-
* @default () => "throwError"
|
|
590
|
-
*
|
|
591
|
-
*/
|
|
592
|
-
readonly sideEffectImportHandling?: (specifier: string, importer: string) => "drop" | "throwError";
|
|
593
515
|
};
|
|
594
516
|
export type AssetHandlingOptions = {
|
|
595
517
|
/**
|
|
596
518
|
* Any additional assets you wish to provide, besides those located in the
|
|
597
519
|
* assets/ directories
|
|
598
520
|
*
|
|
521
|
+
* @example
|
|
522
|
+
* ```ts
|
|
523
|
+
* import resolvePkg from "resolve-pkg";
|
|
524
|
+
*
|
|
525
|
+
* // ...
|
|
526
|
+
*
|
|
527
|
+
* extra: [
|
|
528
|
+
* {
|
|
529
|
+
* type: "directory",
|
|
530
|
+
* source: resolvePkg("@arcgis/arcade-sdk/dist/arcgis-arcade-editor")!,
|
|
531
|
+
* destination: "arcade-language",
|
|
532
|
+
* },
|
|
533
|
+
* ]
|
|
534
|
+
* ```
|
|
535
|
+
*
|
|
599
536
|
* @remarks
|
|
600
537
|
* If you need additional flexibility, you can call the
|
|
601
538
|
* `compilerContext.provideAssets()` utility at any time
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
export declare const expectExtend: {
|
|
2
|
-
toEqualAttribute: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState>;
|
|
3
|
-
toEqualAttributes: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState>;
|
|
4
|
-
toEqualText: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState>;
|
|
5
|
-
toHaveAttribute: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState>;
|
|
6
|
-
toHaveClass: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState>;
|
|
2
|
+
toEqualAttribute: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState, any[]>;
|
|
3
|
+
toEqualAttributes: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState, any[]>;
|
|
4
|
+
toEqualText: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState, any[]>;
|
|
5
|
+
toHaveAttribute: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState, any[]>;
|
|
6
|
+
toHaveClass: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState, any[]>;
|
|
7
7
|
toHaveClasses: (element: unknown, expectClassNames: string[]) => import('@vitest/expect').SyncExpectationResult;
|
|
8
|
-
toMatchClasses: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState>;
|
|
9
|
-
toHaveReceivedEvent: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState>;
|
|
10
|
-
toHaveReceivedEventTimes: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState>;
|
|
11
|
-
toHaveReceivedEventDetail: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState>;
|
|
12
|
-
toHaveFirstReceivedEventDetail: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState>;
|
|
13
|
-
toHaveLastReceivedEventDetail: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState>;
|
|
14
|
-
toHaveNthReceivedEventDetail: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState>;
|
|
8
|
+
toMatchClasses: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState, any[]>;
|
|
9
|
+
toHaveReceivedEvent: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState, any[]>;
|
|
10
|
+
toHaveReceivedEventTimes: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState, any[]>;
|
|
11
|
+
toHaveReceivedEventDetail: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState, any[]>;
|
|
12
|
+
toHaveFirstReceivedEventDetail: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState, any[]>;
|
|
13
|
+
toHaveLastReceivedEventDetail: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState, any[]>;
|
|
14
|
+
toHaveNthReceivedEventDetail: import('@vitest/expect').RawMatcherFn<import('@vitest/expect').MatcherState, any[]>;
|
|
15
15
|
};
|
|
16
16
|
export interface PuppeteerMatchers<R = unknown> {
|
|
17
17
|
toEqualAttribute: (expectedAttribute: string, expectedValue: unknown) => R;
|
package/dist/testing/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { render as C } from "lit
|
|
2
|
-
import { unsafeStatic as m, html as w } from "lit-html
|
|
1
|
+
import { render as C } from "lit";
|
|
2
|
+
import { unsafeStatic as m, html as w } from "lit/static-html.js";
|
|
3
3
|
import { devOnly$getLitElementTagNameAndRuntime as $, LitElement as S } from "@arcgis/lumina";
|
|
4
|
-
import { camelToKebab as _ } from "@arcgis/
|
|
4
|
+
import { camelToKebab as _ } from "@arcgis/toolkit/string";
|
|
5
5
|
import { onTestFinished as x, expect as E } from "vitest";
|
|
6
6
|
import O from "vitest-fail-on-console";
|
|
7
7
|
import R from "js-beautify";
|
package/dist/testing/mount.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TemplateResult } from 'lit
|
|
1
|
+
import { TemplateResult } from 'lit';
|
|
2
2
|
import { JsxNode, LitElement, ToElement } from '@arcgis/lumina';
|
|
3
3
|
export type RenderResult<Component extends HTMLElement> = {
|
|
4
4
|
/**
|
|
@@ -98,7 +98,7 @@ export type RenderOptions<Component extends HTMLElement = HTMLElement> = {
|
|
|
98
98
|
* In it's simplest form, what this function is doing is the following:
|
|
99
99
|
*
|
|
100
100
|
* ```tsx
|
|
101
|
-
* import { render } from "lit
|
|
101
|
+
* import { render } from "lit";
|
|
102
102
|
* render(<arcgis-counter />, document.body);
|
|
103
103
|
* const el = document.querySelector("arcgis-counter")!;
|
|
104
104
|
* await el.componentOnReady();
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type VitestBrowserModeProvider = "playwright" | "preview" | "webdriverio" | (string & {}) | undefined;
|
|
2
|
+
export type VitestPartialConfig = {
|
|
3
|
+
globalSetup?: string[] | string;
|
|
4
|
+
runner?: string;
|
|
5
|
+
include?: string[];
|
|
6
|
+
environment?: "edge-runtime" | "happy-dom" | "jsdom" | "node" | (Record<never, never> & string);
|
|
7
|
+
forceRerunTriggers?: string[];
|
|
8
|
+
};
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
-
import { SourceDescription } from 'rollup';
|
|
2
1
|
import { CompilerContext } from '../context';
|
|
3
|
-
|
|
2
|
+
import { TransformResult } from 'vite';
|
|
3
|
+
export declare function injectRuntimeOptions(runtimeTsCode: string, context: CompilerContext): TransformResult;
|
|
4
|
+
/**
|
|
5
|
+
* Add to chunks/runtime.js import statement for the global CSS file.
|
|
6
|
+
* This way CSS is injected automatically, simplifying get started instructions.
|
|
7
|
+
* We also inject CSS imports for Lumina dependencies this package uses - this
|
|
8
|
+
* is needed to ensure CSS is loaded in correct order - this does not cause
|
|
9
|
+
* duplicate CSS bundling.
|
|
10
|
+
*
|
|
11
|
+
* Research notes: https://devtopia.esri.com/WebGIS/arcgis-web-components/discussions/1824#discussioncomment-12625
|
|
12
|
+
*/
|
|
13
|
+
export declare function getGlobalCssImport(context: CompilerContext): string;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { SourceMap } from 'rollup';
|
|
2
1
|
import { default as ts } from 'typescript';
|
|
2
|
+
import { TransformResult } from 'vite';
|
|
3
|
+
type SourceMap = Extract<NonNullable<TransformResult["map"]>, {
|
|
4
|
+
file: string;
|
|
5
|
+
}>;
|
|
3
6
|
export type UndocumentedTypeScript = {
|
|
4
7
|
readonly createSourceMapGenerator?: (host: ts.CompilerHost, basename: string, sourceRoot: string, dirname: string, compilerOptions: ts.CompilerOptions) => SourceMapGenerator;
|
|
5
8
|
readonly createTextWriter?: (newLine: string) => EmitTextWriter;
|
|
@@ -6,9 +6,3 @@ import { CompilerContext } from '../context';
|
|
|
6
6
|
* the resulting source file
|
|
7
7
|
*/
|
|
8
8
|
export declare function runTransformers(context: CompilerContext, transformationContext: ts.TransformationContext, sourceFile: ts.SourceFile, transformers: readonly FileTransformer[]): ts.SourceFile;
|
|
9
|
-
/**
|
|
10
|
-
* For performance reasons, to avoid the need to re-create the source map
|
|
11
|
-
* after this change, replace the given code string with a comment string of
|
|
12
|
-
* equal length :)
|
|
13
|
-
*/
|
|
14
|
-
export declare const commentOutCode: (match: string) => string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arcgis/lumina-compiler",
|
|
3
|
-
"version": "4.34.0-next.
|
|
3
|
+
"version": "4.34.0-next.121",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -18,25 +18,28 @@
|
|
|
18
18
|
],
|
|
19
19
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@arcgis/api-extractor": "4.34.0-next.
|
|
22
|
-
"@arcgis/components-build-utils": "4.34.0-next.
|
|
23
|
-
"@arcgis/
|
|
24
|
-
"chalk": "^5.
|
|
25
|
-
"esbuild": "^0.25.
|
|
26
|
-
"glob": "^11.0.
|
|
27
|
-
"js-beautify": "^1.15.
|
|
28
|
-
"mime-types": "^
|
|
29
|
-
"rollup": "^4.40.2",
|
|
30
|
-
"rollup-plugin-node-externals": "^8.0.0",
|
|
31
|
-
"sass-embedded": "^1.79.3",
|
|
21
|
+
"@arcgis/api-extractor": "4.34.0-next.121",
|
|
22
|
+
"@arcgis/components-build-utils": "4.34.0-next.121",
|
|
23
|
+
"@arcgis/toolkit": "4.34.0-next.121",
|
|
24
|
+
"chalk": "^5.4.1",
|
|
25
|
+
"esbuild": "^0.25.5",
|
|
26
|
+
"glob": "^11.0.3",
|
|
27
|
+
"js-beautify": "^1.15.4",
|
|
28
|
+
"mime-types": "^3.0.1",
|
|
32
29
|
"tslib": "^2.8.1",
|
|
33
|
-
"
|
|
34
|
-
"vite": "^6.3.4",
|
|
35
|
-
"vite-plugin-dts": "^4.5.3",
|
|
36
|
-
"vitest": "^3.1.3",
|
|
30
|
+
"vite-plugin-dts": "^4.5.4",
|
|
37
31
|
"vitest-fail-on-console": "^0.7.1"
|
|
38
32
|
},
|
|
39
33
|
"peerDependencies": {
|
|
40
|
-
"@arcgis/lumina": "~4.34.0-next.
|
|
34
|
+
"@arcgis/lumina": "~4.34.0-next.121",
|
|
35
|
+
"lit": "^3.3.0",
|
|
36
|
+
"typescript": "~5.8.3",
|
|
37
|
+
"vite": "^7.0.0",
|
|
38
|
+
"vitest": "^3.2.4"
|
|
39
|
+
},
|
|
40
|
+
"peerDependenciesMeta": {
|
|
41
|
+
"vitest": {
|
|
42
|
+
"optional": true
|
|
43
|
+
}
|
|
41
44
|
}
|
|
42
45
|
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This file is a workaround for a TypeScript bug:
|
|
3
|
-
* https://github.com/microsoft/TypeScript/issues/59150
|
|
4
|
-
*
|
|
5
|
-
* Once that bug is fixed, the code can be simplified like so:
|
|
6
|
-
* - This file can be removed
|
|
7
|
-
* - For each place where `escapeBackticks` or `escapeForTemplateLiteral` was
|
|
8
|
-
* used and the result was passed as the 1st AND 2nd parameter to one of
|
|
9
|
-
* ts.factory.createNoSubstitutionTemplateLiteral,
|
|
10
|
-
* ts.factory.createTemplateHead, ts.factory.createTemplateMiddle, or
|
|
11
|
-
* ts.factory.createTemplateTail, change those places like so:
|
|
12
|
-
* - DO NOT call `escapeBackticks` or `escapeForTemplateLiteral` anymore -
|
|
13
|
-
* pass the value as is.
|
|
14
|
-
* - DO NOT provide the 2nd parameter to the factory function.
|
|
15
|
-
* - If `escapeForTemplateLiteral` was used in some other place, it can
|
|
16
|
-
* potentially be replaced with a function like this:
|
|
17
|
-
* string=>escapeTemplateSubstitution(string).replaceAll('`','\`')
|
|
18
|
-
* (where escapeTemplateSubstitution is defined in the current file - move it)
|
|
19
|
-
*
|
|
20
|
-
* More details:
|
|
21
|
-
*
|
|
22
|
-
* In template literals, even though we *really* only need to escape ${ and
|
|
23
|
-
* backticks, we are escaping non-ASCII characters too as that improves scanner
|
|
24
|
-
* performance in JavaScript engines.
|
|
25
|
-
*
|
|
26
|
-
* This is what esbuild does (https://esbuild.github.io/api/#charset), what
|
|
27
|
-
* V8 recommends (https://v8.dev/blog/scanner) and what TypeScript does.
|
|
28
|
-
*
|
|
29
|
-
* The code in this file has been copied from TypeScript's code for escaping
|
|
30
|
-
* template literals (but simplified to remove dead branches and fix eslint
|
|
31
|
-
* warnings):
|
|
32
|
-
* https://github.com/microsoft/TypeScript/blob/3163fe7e3898c1f48cd9bc097b96e3426cd2a453/src/compiler/utilities.ts#L5918-L5986
|
|
33
|
-
*
|
|
34
|
-
* TypeScript can automatically escape template literals for us, but we opt out
|
|
35
|
-
* of that as, due to a bug, they also escape new line characters which is not
|
|
36
|
-
* good as it decreases readability when debugging code.
|
|
37
|
-
*
|
|
38
|
-
* TypeScript does not expose the template literal escaping utils so we had
|
|
39
|
-
* to copy the code here, but modify to not escape new lines.
|
|
40
|
-
*
|
|
41
|
-
*/
|
|
42
|
-
declare function escapeNonAsciiString(s: string): string;
|
|
43
|
-
export declare const escapeBackticks: typeof escapeNonAsciiString;
|
|
44
|
-
export declare const escapeTemplateSubstitution: (str: string) => string;
|
|
45
|
-
export {};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Plugin } from 'vite';
|
|
2
|
-
import { CompilerContext } from '../context';
|
|
3
|
-
/**
|
|
4
|
-
* Emit output compatible with Stencil's dist-hydrate-script build.
|
|
5
|
-
*
|
|
6
|
-
* Based on https://github.com/ionic-team/stencil/blob/main/src/compiler/output-targets/dist-hydrate-script/write-hydrate-outputs.ts
|
|
7
|
-
*
|
|
8
|
-
* @deprecated
|
|
9
|
-
* This option should be used to smooth the migration path from Stencil.
|
|
10
|
-
* You should instruct your SSR users to migrate to Lit's SSR implementation,
|
|
11
|
-
* and then stop using this option.
|
|
12
|
-
*
|
|
13
|
-
* @see https://stenciljs.com/docs/hydrate-app
|
|
14
|
-
* @see https://lit.dev/docs/ssr/overview/
|
|
15
|
-
*/
|
|
16
|
-
export declare function buildStencilHydrate(context: CompilerContext): Plugin | undefined;
|