marko 5.25.7 → 5.25.9

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/README.md CHANGED
@@ -9,6 +9,7 @@
9
9
  [![Continuous Integration status](https://github.com/marko-js/marko/actions/workflows/ci.yml/badge.svg)](https://github.com/marko-js/marko/actions/workflows/ci.yml)
10
10
  [![Code coverage %](https://codecov.io/gh/marko-js/marko/branch/master/graph/badge.svg)](https://codecov.io/gh/marko-js/marko)
11
11
  [![# of monthly downloads](https://img.shields.io/npm/dm/marko.svg)](https://npm-stat.com/charts.html?package=marko)
12
+ [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/7029/badge)](https://bestpractices.coreinfrastructure.org/projects/7029)
12
13
 
13
14
  [Docs](https://markojs.com/docs/getting-started/) ∙ [Try Online](https://markojs.com/try-online/) ∙ [Contribute](#contributors) ∙ [Get Support](#community--support)
14
15
 
package/docs/syntax.md CHANGED
@@ -419,7 +419,7 @@ import componentB from "<component-b>";
419
419
  > </>
420
420
  > ```
421
421
 
422
- > **Note:** You cannot reference a Marko custom tag using a name string:
422
+ > **Note:** You **cannot** reference a Marko custom tag or macro using a name string:
423
423
  >
424
424
  > _Marko Source:_
425
425
  >
@@ -200,9 +200,9 @@ _index.marko_
200
200
  </for-by-two>
201
201
  ```
202
202
 
203
- ### Extending a native tag type
203
+ ### Extending native tag types within a Marko tag
204
204
 
205
- The types for native tags are accessed via the global `Marko.NativeTags` type. Here's an example of a component that adds a feature to the `button` element:
205
+ The types for native tags are accessed via the global `Marko.Input` type. Here's an example of a component that extends the `button` html tag:
206
206
 
207
207
  _color-button.marko_
208
208
 
@@ -219,6 +219,49 @@ $ const { color, renderBody, ...restOfInput } = input;
219
219
  </button>
220
220
  ```
221
221
 
222
+ ### Registering a new native tag (eg for custom elements).
223
+
224
+ ```ts
225
+ interface MyCustomElementAttributes {
226
+ // ...
227
+ }
228
+
229
+ declare global {
230
+ namespace Marko {
231
+ namespace NativeTags {
232
+ // By adding this entry, you can now use `my-custom-element` as a native html tag.
233
+ "my-custom-element": MyCustomElementAttributes
234
+ }
235
+ }
236
+ }
237
+ ```
238
+
239
+ ### Registering new "global" HTML Attributes
240
+
241
+ ```ts
242
+ declare global {
243
+ namespace Marko {
244
+ interface HTMLAttributes {
245
+ "my-non-standard-attribute"?: string; // Adds this attribute as available on all HTML tags.
246
+ }
247
+ }
248
+ }
249
+ ```
250
+
251
+ ### Registering CSS Properties (eg for custom properties)
252
+
253
+ ```ts
254
+ declare global {
255
+ namespace Marko {
256
+ namespace CSS {
257
+ interface Properties {
258
+ "--foo"?: string; // adds a support for a custom `--foo` css property.
259
+ }
260
+ }
261
+ }
262
+ }
263
+ ```
264
+
222
265
  ## TypeScript Syntax in `.marko`
223
266
 
224
267
  Any [JavaScript expression in Marko](./syntax.md#inline-javascript) can also be written as a TypeScript expression.
@@ -358,45 +401,7 @@ _components/color-rotate-button/index.marko_
358
401
  </button>
359
402
  ```
360
403
 
361
- ## Extend Native Tags (for custom elements)
362
-
363
- ```ts
364
- interface MyCustomElementAttributes {
365
- // ...
366
- }
367
-
368
- declare global {
369
- namespace Marko {
370
- namespace NativeTags {
371
- // By adding this entry, you can now use `my-custom-element` as a native html tag.
372
- "my-custom-element": MyCustomElementAttributes
373
- }
374
- }
375
- }
376
- ```
377
-
378
- ## Extending the "global" HTML Attributes
404
+ # CI Type Checking
379
405
 
380
- ```ts
381
- declare global {
382
- namespace Marko {
383
- interface HTMLAttributes {
384
- "my-non-standard-attribute"?: string; // Adds this attribute as available on all HTML tags.
385
- }
386
- }
387
- }
388
- ```
389
-
390
- ## Extending CSS Properties (for custom properties)
391
-
392
- ```ts
393
- declare global {
394
- namespace Marko {
395
- namespace CSS {
396
- interface Properties {
397
- "--foo"?: string; // adds a support for a custom `--foo` css property.
398
- }
399
- }
400
- }
401
- }
402
- ```
406
+ For type checking Marko files outside of your editor there is the ["@marko/type-check" cli](https://github.com/marko-js/language-server/tree/main/packages/type-check).
407
+ Check out the CLI documentation for more information.
package/index.d.ts CHANGED
@@ -364,5 +364,12 @@ declare global {
364
364
  | Body<any, infer Return>
365
365
  ? Return
366
366
  : never;
367
+
368
+ /** @deprecated @see {@link Marko.Input} */
369
+ export type NativeTagInput<Name extends keyof NativeTags> =
370
+ NativeTags[Name]["input"];
371
+ /** @deprecated @see {@link Marko.Return} */
372
+ export type NativeTagReturn<Name extends keyof NativeTags> =
373
+ NativeTags[Name]["return"];
367
374
  }
368
375
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "marko",
3
- "version": "5.25.7",
3
+ "version": "5.25.9",
4
4
  "license": "MIT",
5
5
  "description": "UI Components + streaming, async, high performance, HTML templating for Node.js and the browser.",
6
6
  "dependencies": {
package/tags-html.d.ts CHANGED
@@ -1050,7 +1050,7 @@ declare global {
1050
1050
  * Specifies whether the input field should have autocomplete enabled or disabled.
1051
1051
  * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-autocomplete
1052
1052
  */
1053
- autocomplete?: AttrOnOff;
1053
+ autocomplete?: AttrAutoComplete;
1054
1054
 
1055
1055
  /**
1056
1056
  * Indicates whether a file input should use a specific capture method.
@@ -1132,7 +1132,7 @@ declare global {
1132
1132
  * The maximum allowed value for the input.
1133
1133
  * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-max
1134
1134
  */
1135
- max?: AttrString;
1135
+ max?: AttrStringOrNumber;
1136
1136
 
1137
1137
  /**
1138
1138
  * The maximum number of characters allowed in the input.
@@ -1144,7 +1144,7 @@ declare global {
1144
1144
  * The minimum allowed value for the input.
1145
1145
  * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-min
1146
1146
  */
1147
- min?: AttrString;
1147
+ min?: AttrStringOrNumber;
1148
1148
 
1149
1149
  /**
1150
1150
  * The minimum number of characters required in the input.
@@ -1175,7 +1175,7 @@ declare global {
1175
1175
  * A short hint to display in the input field before the user enters a value.
1176
1176
  * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-placeholder
1177
1177
  */
1178
- placeholder?: AttrString;
1178
+ placeholder?: AttrStringOrNumber;
1179
1179
 
1180
1180
  /**
1181
1181
  * Specifies the target element for the popover.
@@ -1217,7 +1217,7 @@ declare global {
1217
1217
  * Specifies the allowed number intervals for the input value.
1218
1218
  * @see https://html.spec.whatwg.org/multipage/input.html#attr-input-step
1219
1219
  */
1220
- step?: AttrString;
1220
+ step?: AttrStringOrNumber;
1221
1221
 
1222
1222
  /**
1223
1223
  * Controls the data type (and associated control) of the element.
@@ -1779,7 +1779,7 @@ declare global {
1779
1779
  * Controls whether the browser should automatically complete the value for the select.
1780
1780
  * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-autocomplete
1781
1781
  */
1782
- autocomplete?: AttrOnOff;
1782
+ autocomplete?: AttrAutoComplete;
1783
1783
 
1784
1784
  /**
1785
1785
  * Indicates whether the select element should be disabled or not.
@@ -1987,7 +1987,7 @@ declare global {
1987
1987
  * Helps browsers autofill the user's input based on previous entries.
1988
1988
  * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fe-autocomplete
1989
1989
  */
1990
- autocomplete?: AttrOnOff;
1990
+ autocomplete?: AttrAutoComplete;
1991
1991
 
1992
1992
  /**
1993
1993
  * (Safari only). Controls the autocorrect behavior of the <textarea> element.
@@ -3749,33 +3749,60 @@ type AttrBooleanString = AttrMissing | "false" | "true";
3749
3749
  type AttrYesNoString = AttrMissing | "no" | "yes";
3750
3750
  type AttrTriState = AttrBooleanString | "mixed";
3751
3751
  type AttrOnOff = AttrMissing | "on" | "off";
3752
+ type AttrAutoComplete =
3753
+ | AttrOnOff
3754
+ | "shipping"
3755
+ | "billing"
3756
+ | "name"
3757
+ | "honorific-prefix"
3758
+ | "given-name"
3759
+ | "additional-name"
3760
+ | "family-name"
3761
+ | "honorific-suffix"
3762
+ | "nickname"
3763
+ | "username"
3764
+ | "new-password"
3765
+ | "current-password"
3766
+ | "one-time-code"
3767
+ | "organization-title"
3768
+ | "organization"
3769
+ | "street-address"
3770
+ | "address-line1"
3771
+ | "address-line2"
3772
+ | "address-line3"
3773
+ | "address-level4"
3774
+ | "address-level3"
3775
+ | "address-level2"
3776
+ | "address-level1"
3777
+ | "country"
3778
+ | "country-name"
3779
+ | "postal-code"
3780
+ | "cc-name"
3781
+ | "cc-given-name"
3782
+ | "cc-additional-name"
3783
+ | "cc-family-name"
3784
+ | "cc-number"
3785
+ | "cc-exp"
3786
+ | "cc-exp-month"
3787
+ | "cc-exp-year"
3788
+ | "cc-csc"
3789
+ | "cc-type"
3790
+ | "transaction-currency"
3791
+ | "transaction-amount"
3792
+ | "language"
3793
+ | "bday"
3794
+ | "bday-day"
3795
+ | "bday-month"
3796
+ | "bday-year"
3797
+ | "sex"
3798
+ | "url"
3799
+ | "photo"
3800
+ | "home"
3801
+ | "work"
3802
+ | "mobile"
3803
+ | "fax"
3804
+ | "pager"
3805
+ | (string & {});
3752
3806
  type Tag<Input> = Input extends Marko.HTMLAttributes<infer Element>
3753
3807
  ? Marko.NativeTag<Input, Element>
3754
3808
  : never;
3755
- type UpperCaseChar =
3756
- | "A"
3757
- | "B"
3758
- | "C"
3759
- | "D"
3760
- | "E"
3761
- | "F"
3762
- | "G"
3763
- | "H"
3764
- | "I"
3765
- | "J"
3766
- | "K"
3767
- | "L"
3768
- | "M"
3769
- | "N"
3770
- | "O"
3771
- | "P"
3772
- | "Q"
3773
- | "R"
3774
- | "S"
3775
- | "T"
3776
- | "U"
3777
- | "V"
3778
- | "W"
3779
- | "X"
3780
- | "Y"
3781
- | "Z";