@aldi/ralma 1.0.0

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.
@@ -0,0 +1,175 @@
1
+ /* Ralma v1.0.0 */
2
+ (()=>{var E=Object.defineProperty,L=Object.defineProperties;var O=Object.getOwnPropertyDescriptors;var m=Object.getOwnPropertySymbols;var S=Object.prototype.hasOwnProperty,T=Object.prototype.propertyIsEnumerable;var p=(i,e,a)=>e in i?E(i,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[e]=a,f=(i,e)=>{for(var a in e||(e={}))S.call(e,a)&&p(i,a,e[a]);if(m)for(var a of m(e))T.call(e,a)&&p(i,a,e[a]);return i},c=(i,e)=>L(i,O(e));var b=Symbol.for("ralma.__registered__"),_=/^\s*(?:javascript|data|vbscript):/i,N=new Set(["button","card-footer-item","dropdown-item","navbar-item","navbar-link","pagination-previous","pagination-next","pagination-link","panel-block","tab-link"]),v=["three-quarters","two-thirds","half","one-third","one-quarter","four-fifths","three-fifths","two-fifths","one-fifth"],g=Array.from({length:12},(i,e)=>String(e+1)),u=["mobile","tablet","touch","desktop","widescreen","fullhd"],A=[...v.flatMap(i=>[[i,`is-${i}`],[`offset-${i}`,`is-offset-${i}`]]),...g.flatMap(i=>[[i,`is-${i}`],[`offset-${i}`,`is-offset-${i}`]]),["narrow","is-narrow"],...u.map(i=>[`narrow-${i}`,`is-narrow-${i}`]),...u.flatMap(i=>v.flatMap(e=>[[`${e}-${i}`,`is-${e}-${i}`],[`offset-${e}-${i}`,`is-offset-${e}-${i}`]])),...u.flatMap(i=>g.flatMap(e=>[[`${e}-${i}`,`is-${e}-${i}`],[`offset-${e}-${i}`,`is-offset-${e}-${i}`]]))],z=[["centered","is-centered"],["gapless","is-gapless"],["multiline","is-multiline"],["vcentered","is-vcentered"],["mobile","is-mobile"],["desktop","is-desktop"]];function o(...i){return i.map(e=>`{{#${e}}}is-${e}{{/}}`).join(" ")}var k=["white","light","dark","black","text","primary","link","info","success","warning","danger"],$=["primary","link","info","success","warning","danger","dark"],H=["small","medium","large"],q=["outlined","inverted","rounded","hovered","focused","loading","static","active"],y=o(...k,...H,...q),D=o("transparent","spaced","fixed-top","fixed-bottom",...k),F=o(...$,...H),G=o(...$),P=`
3
+ {{#if safeHref}}
4
+ <a
5
+ class="button ${y} {{class}}"
6
+ {{#if id}}id="{{id}}"{{/if}}
7
+ {{#if title}}title="{{title}}"{{/if}}
8
+ {{#if disabled}}aria-disabled="true" tabindex="-1"{{/if}}
9
+ {{#if dropdown}}aria-haspopup="true"{{/if}}
10
+ {{#if ariaControls}}aria-controls="{{ariaControls}}"{{/if}}
11
+ {{#if safeHref}}{{#if disabled}}{{else}}href="{{safeHref}}"{{/if}}{{/if}}
12
+ >{{yield}}</a>
13
+ {{else}}
14
+ <button
15
+ type="{{buttonType}}"
16
+ class="button ${y} {{class}}"
17
+ {{#if id}}id="{{id}}"{{/if}}
18
+ {{#if title}}title="{{title}}"{{/if}}
19
+ {{#if disabled}}disabled{{/if}}
20
+ {{#if dropdown}}aria-haspopup="true"{{/if}}
21
+ {{#if ariaControls}}aria-controls="{{ariaControls}}"{{/if}}
22
+ >{{yield}}</button>
23
+ {{/if}}
24
+ `.trim(),d={button:{isolated:!0,data(){return{buttonType:"button"}},template:P},breadcrumb:{isolated:!0,template:`
25
+ <nav
26
+ class="breadcrumb {{#centered}}is-centered{{/}} {{#right}}is-right{{/}} {{#small}}is-small{{/}} {{#medium}}is-medium{{/}} {{#large}}is-large{{/}} {{#arrow}}has-arrow-separator{{/}} {{#bullet}}has-bullet-separator{{/}} {{#dot}}has-dot-separator{{/}} {{#succeeds}}has-succeeds-separator{{/}} {{class}}"
27
+ aria-label="{{#if ariaLabel}}{{ariaLabel}}{{else}}breadcrumbs{{/if}}"
28
+ {{#if id}}id="{{id}}"{{/if}}
29
+ >
30
+ <ul>{{yield}}</ul>
31
+ </nav>
32
+ `.trim()},"breadcrumb-item":{isolated:!0,template:`
33
+ <li class="{{#active}}is-active{{/}} {{class}}" {{#if id}}id="{{id}}"{{/if}}>
34
+ {{yield}}
35
+ </li>
36
+ `.trim()},card:{isolated:!0,template:'<div class="card {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</div>'},"card-header":{isolated:!0,template:'<header class="card-header {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</header>'},"card-header-title":{isolated:!0,template:'<p class="card-header-title {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</p>'},"card-header-icon":{isolated:!0,template:`
37
+ <button
38
+ type="button"
39
+ class="card-header-icon {{class}}"
40
+ aria-label="{{#if ariaLabel}}{{ariaLabel}}{{else}}more options{{/if}}"
41
+ {{#if id}}id="{{id}}"{{/if}}
42
+ {{#if onclick}}on-click="{{onclick}}"{{/if}}
43
+ >{{yield}}</button>
44
+ `.trim()},"card-image":{isolated:!0,template:'<div class="card-image {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</div>'},"card-content":{isolated:!0,template:'<div class="card-content {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</div>'},"card-footer":{isolated:!0,template:'<footer class="card-footer {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</footer>'},"card-footer-item":{isolated:!0,template:`
45
+ {{#if safeHref}}
46
+ <a class="card-footer-item {{class}}" href="{{safeHref}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</a>
47
+ {{else}}
48
+ <div class="card-footer-item {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</div>
49
+ {{/if}}
50
+ `.trim()},dropdown:{isolated:!0,template:"<div class='dropdown {{#active}}is-active{{/}} {{class}}' {{#if id}} id='{{id}}' {{/if}}>{{yield}}</div>"},"dropdown-trigger":{isolated:!0,template:"<div class='dropdown-trigger {{class}}' {{#if id}} id='{{id}}' {{/if}}>{{yield}}</div>"},"dropdown-button":{isolated:!0,template:"<button type='button' class='button {{class}}' {{#if id}} id='{{id}}' {{/if}} aria-haspopup='true' {{#if ariaControls}}aria-controls='{{ariaControls}}'{{/if}}><span>{{yield}}</span><span class='icon is-small'><i class='fas fa-angle-down' aria-hidden='true'></i></span></button>"},"dropdown-item":{isolated:!0,template:`
51
+ {{#if safeHref}}
52
+ <a
53
+ class="dropdown-item {{class}} {{#active}}is-active{{/}}"
54
+ href="{{safeHref}}"
55
+ {{#if id}}id="{{id}}"{{/if}}
56
+ {{#if onclick}}on-click="{{onclick}}"{{/if}}
57
+ >{{yield}}</a>
58
+ {{else}}
59
+ <button
60
+ type="button"
61
+ class="dropdown-item {{class}} {{#active}}is-active{{/}}"
62
+ {{#if id}}id="{{id}}"{{/if}}
63
+ {{#if onclick}}on-click="{{onclick}}"{{/if}}
64
+ >{{yield}}</button>
65
+ {{/if}}
66
+ `.trim()},"dropdown-menu":{isolated:!0,template:"<div class='dropdown-menu {{class}}' {{#if id}} id='{{id}}' {{/if}} {{#if role}}role='{{role}}'{{/if}}>{{yield}}</div>"},"dropdown-content":{isolated:!0,template:"<div class='dropdown-content {{class}}' {{#if id}} id='{{id}}' {{/if}}>{{yield}}</div>"},"dropdown-divider":{isolated:!0,template:"<hr class='dropdown-divider {{class}}' {{#if id}} id='{{id}}' {{/if}}>"},menu:{isolated:!0,template:'<aside class="menu {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</aside>'},"menu-label":{isolated:!0,template:'<p class="menu-label {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</p>'},"menu-list":{isolated:!0,template:'<ul class="menu-list {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</ul>'},message:{isolated:!0,template:`
67
+ <article class="message ${F} {{class}}" {{#if id}}id="{{id}}"{{/if}}>
68
+ {{yield}}
69
+ </article>
70
+ `.trim()},"message-header":{isolated:!0,template:'<div class="message-header {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</div>'},"message-body":{isolated:!0,template:'<div class="message-body {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</div>'},modal:{isolated:!0,template:'<div class="modal {{#active}}is-active{{/}} {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</div>'},"modal-background":{isolated:!0,template:'<div class="modal-background {{class}}" {{#if id}}id="{{id}}"{{/if}}></div>'},"modal-content":{isolated:!0,template:'<div class="modal-content {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</div>'},"modal-close":{isolated:!0,template:`
71
+ <button
72
+ type="button"
73
+ class="modal-close {{#small}}is-small{{/}} {{#medium}}is-medium{{/}} {{#large}}is-large{{/}} {{class}}"
74
+ aria-label="{{#if ariaLabel}}{{ariaLabel}}{{else}}close{{/if}}"
75
+ {{#if id}}id="{{id}}"{{/if}}
76
+ {{#if onclick}}on-click="{{onclick}}"{{/if}}
77
+ ></button>
78
+ `.trim()},"modal-card":{isolated:!0,template:'<div class="modal-card {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</div>'},"modal-card-head":{isolated:!0,template:'<header class="modal-card-head {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</header>'},"modal-card-title":{isolated:!0,template:'<p class="modal-card-title {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</p>'},"modal-card-body":{isolated:!0,template:'<section class="modal-card-body {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</section>'},"modal-card-foot":{isolated:!0,template:'<footer class="modal-card-foot {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</footer>'},navbar:{isolated:!0,template:`
79
+ <nav
80
+ class="navbar ${D} {{class}}"
81
+ role="{{#if role}}{{role}}{{else}}navigation{{/if}}"
82
+ aria-label="{{#if ariaLabel}}{{ariaLabel}}{{else}}main navigation{{/if}}"
83
+ {{#if id}}id="{{id}}"{{/if}}
84
+ >
85
+ {{yield}}
86
+ </nav>
87
+ `.trim()},"navbar-brand":{isolated:!0,template:'<div class="navbar-brand {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</div>'},"navbar-burger":{isolated:!0,template:`
88
+ <button
89
+ type="button"
90
+ class="navbar-burger {{#active}}is-active{{/}} {{class}}"
91
+ aria-label="{{#if ariaLabel}}{{ariaLabel}}{{else}}menu{{/if}}"
92
+ aria-expanded="{{#if expanded}}true{{else}}false{{/if}}"
93
+ {{#if dataTarget}}data-target="{{dataTarget}}"{{/if}}
94
+ {{#if id}}id="{{id}}"{{/if}}
95
+ {{#if onclick}}on-click="{{onclick}}"{{/if}}
96
+ >{{yield}}</button>
97
+ `.trim()},"navbar-menu":{isolated:!0,template:'<div class="navbar-menu {{#active}}is-active{{/}} {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</div>'},"navbar-start":{isolated:!0,template:'<div class="navbar-start {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</div>'},"navbar-end":{isolated:!0,template:'<div class="navbar-end {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</div>'},"navbar-item":{isolated:!0,template:`
98
+ {{#if safeHref}}
99
+ <a
100
+ class="navbar-item {{#active}}is-active{{/}} {{class}}"
101
+ href="{{safeHref}}"
102
+ {{#if id}}id="{{id}}"{{/if}}
103
+ {{#if onclick}}on-click="{{onclick}}"{{/if}}
104
+ >{{yield}}</a>
105
+ {{else}}
106
+ <div class="navbar-item {{#active}}is-active{{/}} {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</div>
107
+ {{/if}}
108
+ `.trim()},"navbar-item-dropdown":{isolated:!0,template:`
109
+ <div class="navbar-item has-dropdown {{#active}}is-active{{/}} {{#hoverable}}is-hoverable{{/}} {{class}}" {{#if id}}id="{{id}}"{{/if}}>
110
+ {{yield}}
111
+ </div>
112
+ `.trim()},"navbar-link":{isolated:!0,template:`
113
+ {{#if safeHref}}
114
+ <a class="navbar-link {{#active}}is-active{{/}} {{class}}" href="{{safeHref}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</a>
115
+ {{else}}
116
+ <button type="button" class="navbar-link {{#active}}is-active{{/}} {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</button>
117
+ {{/if}}
118
+ `.trim()},"navbar-dropdown":{isolated:!0,template:`
119
+ <div class="navbar-dropdown {{#right}}is-right{{/}} {{#boxed}}is-boxed{{/}} {{class}}" {{#if id}}id="{{id}}"{{/if}}>
120
+ {{yield}}
121
+ </div>
122
+ `.trim()},"navbar-divider":{isolated:!0,template:'<hr class="navbar-divider {{class}}" {{#if id}}id="{{id}}"{{/if}} />'},pagination:{isolated:!0,template:`
123
+ <nav
124
+ class="pagination {{#centered}}is-centered{{/}} {{#right}}is-right{{/}} {{#rounded}}is-rounded{{/}} {{#small}}is-small{{/}} {{#medium}}is-medium{{/}} {{#large}}is-large{{/}} {{class}}"
125
+ role="{{#if role}}{{role}}{{else}}navigation{{/if}}"
126
+ aria-label="{{#if ariaLabel}}{{ariaLabel}}{{else}}pagination{{/if}}"
127
+ {{#if id}}id="{{id}}"{{/if}}
128
+ >
129
+ {{yield}}
130
+ </nav>
131
+ `.trim()},"pagination-previous":{isolated:!0,template:`
132
+ <a
133
+ class="pagination-previous {{class}}"
134
+ {{#if id}}id="{{id}}"{{/if}}
135
+ {{#if title}}title="{{title}}"{{/if}}
136
+ {{#if disabled}}aria-disabled="true" tabindex="-1"{{/if}}
137
+ {{#if safeHref}}{{#if disabled}}{{else}}href="{{safeHref}}"{{/if}}{{/if}}
138
+ >{{yield}}</a>
139
+ `.trim()},"pagination-next":{isolated:!0,template:`
140
+ <a
141
+ class="pagination-next {{class}}"
142
+ {{#if id}}id="{{id}}"{{/if}}
143
+ {{#if title}}title="{{title}}"{{/if}}
144
+ {{#if disabled}}aria-disabled="true" tabindex="-1"{{/if}}
145
+ {{#if safeHref}}{{#if disabled}}{{else}}href="{{safeHref}}"{{/if}}{{/if}}
146
+ >{{yield}}</a>
147
+ `.trim()},"pagination-list":{isolated:!0,template:'<ul class="pagination-list {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</ul>'},"pagination-link":{isolated:!0,template:`
148
+ <a
149
+ class="pagination-link {{#current}}is-current{{/}} {{class}}"
150
+ {{#if ariaLabel}}aria-label="{{ariaLabel}}"{{else}}{{#if page}}aria-label="Goto page {{page}}"{{/if}}{{/if}}
151
+ {{#if current}}aria-current="page"{{/if}}
152
+ {{#if id}}id="{{id}}"{{/if}}
153
+ {{#if safeHref}}href="{{safeHref}}"{{/if}}
154
+ >{{yield}}</a>
155
+ `.trim()},"pagination-ellipsis":{isolated:!0,template:'<span class="pagination-ellipsis {{class}}" {{#if id}}id="{{id}}"{{/if}}>&hellip;</span>'},panel:{isolated:!0,template:`
156
+ <nav class="panel ${G} {{class}}" {{#if id}}id="{{id}}"{{/if}}>
157
+ {{yield}}
158
+ </nav>
159
+ `.trim()},"panel-heading":{isolated:!0,template:'<p class="panel-heading {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</p>'},"panel-tabs":{isolated:!0,template:'<p class="panel-tabs {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</p>'},"panel-block":{isolated:!0,template:`
160
+ {{#if safeHref}}
161
+ <a class="panel-block {{#active}}is-active{{/}} {{class}}" href="{{safeHref}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</a>
162
+ {{else}}
163
+ <div class="panel-block {{#active}}is-active{{/}} {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</div>
164
+ {{/if}}
165
+ `.trim()},"panel-icon":{isolated:!0,template:'<span class="panel-icon {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</span>'},tabs:{isolated:!0,template:`
166
+ <div class="tabs {{#centered}}is-centered{{/}} {{#right}}is-right{{/}} {{#boxed}}is-boxed{{/}} {{#toggle}}is-toggle{{/}} {{#toggle-rounded}}is-toggle-rounded{{/}} {{#fullwidth}}is-fullwidth{{/}} {{#small}}is-small{{/}} {{#medium}}is-medium{{/}} {{#large}}is-large{{/}} {{class}}" {{#if id}}id="{{id}}"{{/if}}>
167
+ <ul>{{yield}}</ul>
168
+ </div>
169
+ `.trim()},tab:{isolated:!0,template:'<li class="{{#active}}is-active{{/}} {{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</li>'},"tab-link":{isolated:!0,template:`
170
+ {{#if safeHref}}
171
+ <a href="{{safeHref}}" class="{{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</a>
172
+ {{else}}
173
+ <button type="button" class="{{class}}" {{#if id}}id="{{id}}"{{/if}}>{{yield}}</button>
174
+ {{/if}}
175
+ `.trim()},content:{isolated:!0,template:"<div class='content {{#small}}is-small{{/}} {{#medium}}is-medium{{/}} {{#large}}is-large{{/}} {{class}}' {{#if id}} id='{{id}}' {{/if}}>{{yield}}</div>"},column:{isolated:!0,computed:{columnModifiers(){return w(this,A)}},template:"<div class='column {{class}} {{columnModifiers}}' {{#if id}} id='{{id}}' {{/if}}>{{yield}}</div>"},columns:{isolated:!0,computed:{columnsModifiers(){return w(this,z)}},template:"<div class='columns {{class}} {{columnsModifiers}}' {{#if id}} id='{{id}}' {{/if}}>{{yield}}</div>"}};for(let i of Object.values(d))Object.freeze(i);Object.freeze(d);var x=Object.entries(d),B=x.map(([i,e])=>[i,N.has(i)?K(e):e]),Y=Object.freeze(x.map(([i])=>i));function I(i){return Array.from(i).filter(e=>{let a=e.charCodeAt(0);return a>32&&a!==127}).join("")}function h(i){if(typeof i!="string")return null;let e=i.trim();return e===""||_.test(I(e))?null:e}function w(i,e){return e.filter(([a])=>i.get(a)).map(([,a])=>a).join(" ")}function K(i){let e=typeof i.data=="function"?i.data:null,a=typeof i.oninit=="function"?i.oninit:null;return c(f({},i),{data(){let t=e?e.call(this):{};return c(f({},t),{safeHref:h(t.href)})},oninit(){a&&a.call(this);let t=l=>{let s=h(l);this.get("safeHref")!==s&&this.set("safeHref",s)};t(this.get("href")),this.observe("href",l=>{t(l)},{init:!1})}})}function M(i,e={}){if(i==null||typeof i!="object"&&typeof i!="function")throw new TypeError("registerRalma(Ractive): Ractive must be an object or function");let a=i,t=typeof a.extend=="function",l=a.components!=null&&typeof a.components=="object";if(!t||!l)throw new TypeError("registerRalma(Ractive): Ractive must have .extend() and .components");if(e==null||typeof e!="object"&&typeof e!="function")throw new TypeError("registerRalma(Ractive, options): options must be an object when provided");let s=e.overwrite===!0,j=e.warnOnCollision===!0,r=a.components[b];if(r&&typeof r=="object"&&r.definitions===d&&r.overwrite===s)return i;for(let[n,C]of B){if(!s&&Object.prototype.hasOwnProperty.call(a.components,n)){j&&console.warn(`registerRalma: skipping existing component "${n}"`);continue}a.components[n]=a.extend(C)}return a.components[b]=Object.freeze({definitions:d,overwrite:s}),i}var R=typeof window!="undefined"?window:globalThis;if(!R.Ractive)throw new Error("Ralma: window.Ractive is required before loading ralma.js");M(R.Ractive);})();
package/package.json ADDED
@@ -0,0 +1,81 @@
1
+ {
2
+ "name": "@aldi/ralma",
3
+ "version": "1.0.0",
4
+ "description": "Stateless Ractive components for Bulma",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/aldi/ralma.git"
10
+ },
11
+ "keywords": [
12
+ "ractive",
13
+ "ractive-plugin",
14
+ "bulma",
15
+ "components",
16
+ "ui",
17
+ "css"
18
+ ],
19
+ "homepage": "https://aldi.github.io/ralma",
20
+ "bugs": {
21
+ "url": "https://github.com/aldi/ralma/issues"
22
+ },
23
+ "author": "aldi",
24
+ "sideEffects": [
25
+ "./bin/ralma.js",
26
+ "./bin/ralma.min.js"
27
+ ],
28
+ "files": [
29
+ "src/",
30
+ "bin/",
31
+ "types/"
32
+ ],
33
+ "exports": {
34
+ ".": {
35
+ "types": "./types/index.d.ts",
36
+ "default": "./src/index.js"
37
+ },
38
+ "./browser": "./bin/ralma.js",
39
+ "./min": "./bin/ralma.min.js"
40
+ },
41
+ "engines": {
42
+ "node": ">=22"
43
+ },
44
+ "publishConfig": {
45
+ "access": "public",
46
+ "provenance": true
47
+ },
48
+ "scripts": {
49
+ "test": "node --test",
50
+ "test:coverage": "node --test --experimental-test-coverage",
51
+ "build": "node ./tools/build.mjs && npm run build:types",
52
+ "build:types": "tsc --project tsconfig.build.json",
53
+ "typecheck": "tsc --project tsconfig.json",
54
+ "lint": "eslint .",
55
+ "lint:fix": "eslint . --fix",
56
+ "format": "prettier --write .",
57
+ "format:check": "prettier --check .",
58
+ "docs:install": "npm --prefix docs ci",
59
+ "docs:dev": "npm --prefix docs run dev",
60
+ "docs:build": "npm --prefix docs run build",
61
+ "docs:lint": "npm --prefix docs run lint",
62
+ "version": "npm run build",
63
+ "prepack": "npm test && npm run build && npm run lint && npm run typecheck && npm run format:check"
64
+ },
65
+ "overrides": {
66
+ "brace-expansion": "^5.0.9"
67
+ },
68
+ "peerDependencies": {
69
+ "ractive": "^1.4.4"
70
+ },
71
+ "devDependencies": {
72
+ "@eslint/js": "9.39.5",
73
+ "@types/node": "26.4.1",
74
+ "esbuild": "^0.28.2",
75
+ "eslint": "9.39.5",
76
+ "globals": "17.12.0",
77
+ "prettier": "3.9.6",
78
+ "ractive": "^1.4.4",
79
+ "typescript": "7.0.2"
80
+ }
81
+ }