@arenarium/maps-integration-google 1.0.19 → 1.0.20

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/main.d.ts CHANGED
@@ -1,40 +1,45 @@
1
1
  import { IMapProvider, IMapProviderMarker, IMapProviderMarkerCircleOptions, IMapProviderMarkerOptions, MapProviderEvent } from "@arenarium/maps-core/declarations/interfaces";
2
2
  import { MapBounds, MapCoordinates, MapParameters, MapViewport } from "@arenarium/maps-core/declarations/types";
3
+
4
+ //#region src/lib/provider.d.ts
3
5
  interface GoogleMapsClass {
4
- new (container: HTMLElement, options: google.maps.MapOptions): google.maps.Map;
6
+ new (container: HTMLElement, options: google.maps.MapOptions): google.maps.Map;
5
7
  }
6
8
  interface GoogleMapsMarkerClass {
7
- new (options: google.maps.marker.AdvancedMarkerElementOptions): google.maps.marker.AdvancedMarkerElement;
9
+ new (options: google.maps.marker.AdvancedMarkerElementOptions): google.maps.marker.AdvancedMarkerElement;
8
10
  }
9
11
  interface GoogleMapsOptions extends google.maps.MapOptions {
10
- attribution?: boolean;
12
+ attribution?: boolean;
11
13
  }
12
14
  declare class GoogleMapsProvider implements IMapProvider {
13
- private MapClass;
14
- private MapMarkerClass;
15
- private map;
16
- private options;
17
- private circles;
18
- private listeners;
19
- private attributionObserver;
20
- private attributionElement;
21
- constructor(mapClass: GoogleMapsClass, mapMarkerClass: GoogleMapsMarkerClass, container: HTMLElement, options: GoogleMapsOptions);
22
- private insertAttributionElement;
23
- private updateAttributionElement;
24
- getParameters(): MapParameters;
25
- getMap(): google.maps.Map;
26
- getContainer(): HTMLElement;
27
- getZoom(): number;
28
- getCenter(): MapCoordinates;
29
- getBounds(): MapBounds;
30
- getViewport(): MapViewport;
31
- panBy(x: number, y: number): void;
32
- moveTo(lat: number, lng: number, zoom: number): void;
33
- createMarker(options: IMapProviderMarkerOptions): IMapProviderMarker;
34
- updateCircles(options: IMapProviderMarkerCircleOptions[], depth: number): void;
35
- subscribe(event: MapProviderEvent, callback: () => void): void;
36
- unsubscribe(event: MapProviderEvent, callback: () => void): void;
15
+ private MapClass;
16
+ private MapMarkerClass;
17
+ private map;
18
+ private options;
19
+ private circles;
20
+ private listeners;
21
+ private attributionObserver;
22
+ private attributionElement;
23
+ constructor(mapClass: GoogleMapsClass, mapMarkerClass: GoogleMapsMarkerClass, container: HTMLElement, options: GoogleMapsOptions);
24
+ private insertAttributionElement;
25
+ private updateAttributionElement;
26
+ getParameters(): MapParameters;
27
+ getMap(): google.maps.Map;
28
+ getContainer(): HTMLElement;
29
+ getZoom(): number;
30
+ getCenter(): MapCoordinates;
31
+ getBounds(): MapBounds;
32
+ getViewport(): MapViewport;
33
+ panBy(x: number, y: number): void;
34
+ moveTo(lat: number, lng: number, zoom: number): void;
35
+ createMarker(options: IMapProviderMarkerOptions): IMapProviderMarker;
36
+ updateCircles(options: IMapProviderMarkerCircleOptions[], depth: number): void;
37
+ subscribe(event: MapProviderEvent, callback: () => void): void;
38
+ unsubscribe(event: MapProviderEvent, callback: () => void): void;
37
39
  }
40
+ //#endregion
41
+ //#region src/lib/styles.d.ts
38
42
  declare const GoogleMapLightStyle: google.maps.MapTypeStyle[];
39
43
  declare const GoogleMapDarkStyle: google.maps.MapTypeStyle[];
40
- export { GoogleMapsProvider, GoogleMapLightStyle, GoogleMapDarkStyle };
44
+ //#endregion
45
+ export { GoogleMapDarkStyle, GoogleMapLightStyle, GoogleMapsProvider };
package/dist/main.js CHANGED
@@ -1 +1 @@
1
- function L(){class G extends google.maps.OverlayView{parameters;canvas;context;listeners=[];circles=[];animationFrameId=null;animationDirty=!1;constructor(y,T){super();this.parameters=T,this.canvas=document.createElement("canvas"),this.canvas.style.position="absolute",this.canvas.style.top="0px",this.canvas.style.left="0px",this.canvas.style.transform="translate(-50%, -50%)",this.canvas.style.pointerEvents="none";let f=this.canvas.getContext("2d");if(f==null)throw Error("Failed to get canvas context");this.context=f,this.setMap(y)}onAdd(){this.getPanes().markerLayer.appendChild(this.canvas);let y=this.getMap();this.listeners.push(y.addListener("bounds_changed",()=>this.quedraw())),this.listeners.push(y.addListener("zoom_changed",()=>this.quedraw())),new ResizeObserver(this.resize.bind(this)).observe(y.getDiv()),this.resize()}onRemove(){if(this.canvas.parentNode?.removeChild(this.canvas),this.listeners.forEach((y)=>y.remove()),this.listeners=[],this.animationFrameId!==null)cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null}draw(){this.quedraw()}update(y,T){this.circles=[];for(let f of y){let D=Number.isNaN(f.zoom),J=D?0:f.zoom-T,q=D?1/0:f.zoom;this.circles.push({option:f,threshold:f.zoom,minzoom:J,maxzoom:q,coordinate:{lat:f.lat,lng:f.lng}})}this.circles.sort((f,D)=>D.threshold-f.threshold),this.quedraw()}remove(){this.setMap(null)}resize(){let y=this.getMap();if(!y)return;let T=window.devicePixelRatio||1,f=y.getDiv(),D=f.offsetWidth,J=f.offsetHeight;if(this.canvas.width!==D*T||this.canvas.height!==J*T)this.canvas.width=D*T,this.canvas.height=J*T,this.canvas.style.width=`${D}px`,this.canvas.style.height=`${J}px`,this.context.setTransform(T,0,0,T,0,0)}quedraw(){if(this.animationDirty=!0,this.animationFrameId==null)this.animationFrameId=requestAnimationFrame(()=>{if(this.animationFrameId=null,this.animationDirty)this.animationDirty=!1,this.redraw()})}redraw(){let y=this.getMap(),T=this.getProjection(),f=y.getBounds();if(!y||!T||!f)return;let D=this.context;D.save(),D.clearRect(0,0,this.canvas.width,this.canvas.height),D.translate(this.canvas.width/2,this.canvas.height/2);let J=y.getZoom()??0;for(let q of this.circles)this.redrawCircle(D,q,J,T);D.restore()}redrawCircle(y,T,f,D){let J=Number.isNaN(T.threshold),{option:q,minzoom:Y,maxzoom:$,coordinate:w}=T;if(!(J?!0:f>=Y&&f<$))return;let Q=J?0:N(f,Y,$),S=J?0.5:1,V=U(q.radius.min,q.radius.max,Q),K=F(q.color.min,q.color.max,S,Q),I=F(q.stroke.color.min,q.stroke.color.max,S,Q),j=U(q.stroke.width.min,q.stroke.width.max,Q),R=D.fromLatLngToDivPixel(w);if(!R)return;if(y.save(),y.beginPath(),y.arc(R.x,R.y,V,0,Math.PI*2),y.fillStyle=K,y.fill(),j>0)y.strokeStyle=I,y.lineWidth=j,y.stroke();y.restore()}}return G}function U(G,y,T){return G+(y-G)*Math.max(0,Math.min(1,T))}function F(G,y,T,f){let D=(V)=>{let K=V.slice(V.indexOf("(")+1,V.indexOf(")")).split(",");return[Number(K[0]),Number(K[1]),Number(K[2]),K[3]!==void 0?Number(K[3]):1]},[J,q,Y,$]=D(G),[w,X,Q,S]=D(y);return`rgba(${Math.round(U(J,w,f))},${Math.round(U(q,X,f))},${Math.round(U(Y,Q,f))},${U($*T,S*T,f)})`}function N(G,y,T){if(T===y)return 1;return Math.max(0,Math.min(1,(G-y)/(T-y)))}import*as P from"@arenarium/maps-core/map/attribution";import{MAP_BASE_SIZE as W,MAP_ZOOM_MAX as B,MAP_ZOOM_MIN as H,MAP_ZOOM_SCALE as g}from"@arenarium/maps-core/map/constants";class Z{MapClass;MapMarkerClass;map;options;circles;listeners=new Set;attributionObserver;attributionElement;constructor(G,y,T,f){this.MapClass=G,this.MapMarkerClass=y,this.options=f,this.map=new this.MapClass(T,{...f,minZoom:Math.max(f.minZoom??H,H),maxZoom:Math.min(f.maxZoom??B,B),tilt:0,tiltInteractionEnabled:!1,heading:0,headingInteractionEnabled:!1,rotateControl:!1,scaleControl:!1,clickableIcons:!1});let D=L();if(this.circles=new D(this.map,this.getParameters()),f.attribution==!0||f.attribution==null)this.map.addListener("idle",()=>{if(this.attributionObserver)return;this.attributionObserver=new MutationObserver((J,q)=>{if(this.insertAttributionElement(),this.attributionElement==null)return;this.updateAttributionElement(),q.disconnect()}),this.attributionObserver.observe(T,{childList:!0,subtree:!0})}),this.map.addListener("bounds_changed",()=>{this.updateAttributionElement()})}insertAttributionElement(){let G=this.map.getDiv();if(G==null)return;let y=G.getElementsByClassName("gmnoprint")[0];if(y==null)return;if(y.parentElement==null)return;let T=y.cloneNode(!0),f=T.childNodes.item(0)?.childNodes.item(1)?.childNodes.item(0);if(f==null)return;f.title="",f.innerHTML=P.getHtml(),y.parentElement.insertBefore(T,y),this.attributionElement=f}updateAttributionElement(){let G=this.map.getDiv();if(G==null)return;let y=this.attributionElement?.childNodes.item(0);if(y){y.style.height="14px",y.style.display="inline-flex",y.style.alignItems="center",y.style.gap="1px";let T=y.childNodes.item(0);if(T)T.style.height="12px",T.style.width="auto";let f=y.childNodes.item(1);if(f)f.style.display=G.clientWidth>500?"initial":"none",f.style.color=this.options.colorScheme==google.maps.ColorScheme.DARK?"#fff":"#000"}}getParameters(){return{size:W,zoom:{min:this.options.minZoom??H,max:this.options.maxZoom??B,scale:g}}}getMap(){return this.map}getContainer(){return this.map.getDiv()}getZoom(){return this.map.getZoom()??NaN}getCenter(){let G=this.map.getCenter();if(G==null)return{lat:NaN,lng:NaN};return{lat:G.lat(),lng:G.lng()}}getBounds(){let G=this.map.getBounds();if(G==null)return{sw:{lat:NaN,lng:NaN},ne:{lat:NaN,lng:NaN}};let y=G.getSouthWest(),T=G.getNorthEast();return{sw:{lat:y.lat(),lng:y.lng()},ne:{lat:T.lat(),lng:T.lng()}}}getViewport(){return{bounds:this.getBounds(),center:this.getCenter(),zoom:this.getZoom()}}panBy(G,y){this.map.panBy(G,y)}moveTo(G,y,T){this.map.setCenter({lat:G,lng:y}),this.map.setZoom(T)}createMarker(G){let y=new this.MapMarkerClass({position:{lat:G.lat,lng:G.lng},content:G.element,zIndex:G.z});return{inserted:()=>y.map!=null&&y.map==this.map,insert:()=>y.map=this.map,remove:()=>y.map=void 0,update:(T)=>y.zIndex=T}}updateCircles(G,y){this.circles.update(G,y)}subscribe(G,y){let T=google.maps.event.addListener(this.map,G,y);this.listeners.add({id:T,event:G,callback:y})}unsubscribe(G,y){let T=this.listeners.values().find((f)=>f.event===G&&f.callback===y);if(T==null)return;google.maps.event.removeListener(T.id),this.listeners.delete(T)}}var h=[{elementType:"labels.icon",stylers:[{visibility:"off"}]},{stylers:[{saturation:-100},{lightness:-10}]},{featureType:"landscape",stylers:[{lightness:30}]},{featureType:"road",elementType:"geometry",stylers:[{saturation:-100}]}],A=[{elementType:"labels.icon",stylers:[{visibility:"off"}]},{stylers:[{saturation:-100}]},{elementType:"geometry",stylers:[{lightness:-45}]},{elementType:"labels.text.fill",stylers:[{lightness:-100}]},{elementType:"labels.text.stroke",stylers:[{lightness:-15}]},{featureType:"water",elementType:"geometry",stylers:[{lightness:-50}]}];export{Z as GoogleMapsProvider,h as GoogleMapLightStyle,A as GoogleMapDarkStyle};
1
+ import*as e from"@arenarium/maps-core/map/attribution";import{MAP_BASE_SIZE as t,MAP_ZOOM_MAX as n,MAP_ZOOM_MIN as r,MAP_ZOOM_SCALE as i}from"@arenarium/maps-core/map/constants";function a(){class e extends google.maps.OverlayView{parameters;canvas;context;listeners=[];circles=[];animationFrameId=null;animationDirty=!1;constructor(e,t){super(),this.parameters=t,this.canvas=document.createElement(`canvas`),this.canvas.style.position=`absolute`,this.canvas.style.top=`0px`,this.canvas.style.left=`0px`,this.canvas.style.transform=`translate(-50%, -50%)`,this.canvas.style.pointerEvents=`none`;let n=this.canvas.getContext(`2d`);if(n==null)throw Error(`Failed to get canvas context`);this.context=n,this.setMap(e)}onAdd(){this.getPanes().markerLayer.appendChild(this.canvas);let e=this.getMap();this.listeners.push(e.addListener(`bounds_changed`,()=>this.quedraw())),this.listeners.push(e.addListener(`zoom_changed`,()=>this.quedraw())),new ResizeObserver(this.resize.bind(this)).observe(e.getDiv()),this.resize()}onRemove(){this.canvas.parentNode?.removeChild(this.canvas),this.listeners.forEach(e=>e.remove()),this.listeners=[],this.animationFrameId!==null&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null)}draw(){this.quedraw()}update(e,t){this.circles=[];for(let n of e){let e=Number.isNaN(n.zoom),r=e?0:n.zoom-t,i=e?1/0:n.zoom;this.circles.push({option:n,threshold:n.zoom,minzoom:r,maxzoom:i,coordinate:{lat:n.lat,lng:n.lng}})}this.circles.sort((e,t)=>t.threshold-e.threshold),this.quedraw()}remove(){this.setMap(null)}resize(){let e=this.getMap();if(!e)return;let t=window.devicePixelRatio||1,n=e.getDiv(),r=n.offsetWidth,i=n.offsetHeight;(this.canvas.width!==r*t||this.canvas.height!==i*t)&&(this.canvas.width=r*t,this.canvas.height=i*t,this.canvas.style.width=`${r}px`,this.canvas.style.height=`${i}px`,this.context.setTransform(t,0,0,t,0,0))}quedraw(){this.animationDirty=!0,this.animationFrameId??=requestAnimationFrame(()=>{this.animationFrameId=null,this.animationDirty&&(this.animationDirty=!1,this.redraw())})}redraw(){let e=this.getMap(),t=this.getProjection(),n=e.getBounds();if(!e||!t||!n)return;let r=this.context;r.save(),r.clearRect(0,0,this.canvas.width,this.canvas.height),r.translate(this.canvas.width/2,this.canvas.height/2);let i=e.getZoom()??0;for(let e of this.circles)this.redrawCircle(r,e,i,t);r.restore()}redrawCircle(e,t,n,r){let i=Number.isNaN(t.threshold),{option:a,minzoom:l,maxzoom:u,coordinate:d}=t;if(!(i||n>=l&&n<u))return;let f=i?0:c(n,l,u),p=i?.5:1,m=o(a.radius.min,a.radius.max,f),h=s(a.color.min,a.color.max,p,f),g=s(a.stroke.color.min,a.stroke.color.max,p,f),_=o(a.stroke.width.min,a.stroke.width.max,f),v=r.fromLatLngToDivPixel(d);v&&(e.save(),e.beginPath(),e.arc(v.x,v.y,m,0,Math.PI*2),e.fillStyle=h,e.fill(),_>0&&(e.strokeStyle=g,e.lineWidth=_,e.stroke()),e.restore())}}return e}function o(e,t,n){return e+(t-e)*Math.max(0,Math.min(1,n))}function s(e,t,n,r){let i=e=>{let t=e.slice(e.indexOf(`(`)+1,e.indexOf(`)`)).split(`,`);return[Number(t[0]),Number(t[1]),Number(t[2]),t[3]===void 0?1:Number(t[3])]},[a,s,c,l]=i(e),[u,d,f,p]=i(t);return`rgba(${Math.round(o(a,u,r))},${Math.round(o(s,d,r))},${Math.round(o(c,f,r))},${o(l*n,p*n,r)})`}function c(e,t,n){return n===t?1:Math.max(0,Math.min(1,(e-t)/(n-t)))}var l=class{MapClass;MapMarkerClass;map;options;circles;listeners=new Set;attributionObserver;attributionElement;constructor(e,t,i,o){this.MapClass=e,this.MapMarkerClass=t,this.options=o,this.map=new this.MapClass(i,{...o,minZoom:Math.max(o.minZoom??r,r),maxZoom:Math.min(o.maxZoom??n,n),tilt:0,tiltInteractionEnabled:!1,heading:0,headingInteractionEnabled:!1,rotateControl:!1,scaleControl:!1,clickableIcons:!1}),this.circles=new(a())(this.map,this.getParameters()),(o.attribution==1||o.attribution==null)&&(this.map.addListener(`idle`,()=>{this.attributionObserver||(this.attributionObserver=new MutationObserver((e,t)=>{this.insertAttributionElement(),this.attributionElement!=null&&(this.updateAttributionElement(),t.disconnect())}),this.attributionObserver.observe(i,{childList:!0,subtree:!0}))}),this.map.addListener(`bounds_changed`,()=>{this.updateAttributionElement()}))}insertAttributionElement(){let t=this.map.getDiv();if(t==null)return;let n=t.getElementsByClassName(`gmnoprint`)[0];if(n==null||n.parentElement==null)return;let r=n.cloneNode(!0),i=r.childNodes.item(0)?.childNodes.item(1)?.childNodes.item(0);i!=null&&(i.title=``,i.innerHTML=e.getHtml(),n.parentElement.insertBefore(r,n),this.attributionElement=i)}updateAttributionElement(){let e=this.map.getDiv();if(e==null)return;let t=this.attributionElement?.childNodes.item(0);if(t){t.style.height=`14px`,t.style.display=`inline-flex`,t.style.alignItems=`center`,t.style.gap=`1px`;let n=t.childNodes.item(0);n&&(n.style.height=`12px`,n.style.width=`auto`);let r=t.childNodes.item(1);r&&(r.style.display=e.clientWidth>500?`initial`:`none`,r.style.color=this.options.colorScheme==google.maps.ColorScheme.DARK?`#fff`:`#000`)}}getParameters(){return{size:t,zoom:{min:this.options.minZoom??r,max:this.options.maxZoom??n,scale:i}}}getMap(){return this.map}getContainer(){return this.map.getDiv()}getZoom(){return this.map.getZoom()??NaN}getCenter(){let e=this.map.getCenter();return e==null?{lat:NaN,lng:NaN}:{lat:e.lat(),lng:e.lng()}}getBounds(){let e=this.map.getBounds();if(e==null)return{sw:{lat:NaN,lng:NaN},ne:{lat:NaN,lng:NaN}};let t=e.getSouthWest(),n=e.getNorthEast();return{sw:{lat:t.lat(),lng:t.lng()},ne:{lat:n.lat(),lng:n.lng()}}}getViewport(){return{bounds:this.getBounds(),center:this.getCenter(),zoom:this.getZoom()}}panBy(e,t){this.map.panBy(e,t)}moveTo(e,t,n){this.map.setCenter({lat:e,lng:t}),this.map.setZoom(n)}createMarker(e){let t=new this.MapMarkerClass({position:{lat:e.lat,lng:e.lng},content:e.element,zIndex:e.z});return{inserted:()=>t.map!=null&&t.map==this.map,insert:()=>t.map=this.map,remove:()=>t.map=void 0,update:e=>t.zIndex=e}}updateCircles(e,t){this.circles.update(e,t)}subscribe(e,t){let n=google.maps.event.addListener(this.map,e,t);this.listeners.add({id:n,event:e,callback:t})}unsubscribe(e,t){let n=this.listeners.values().find(n=>n.event===e&&n.callback===t);n!=null&&(google.maps.event.removeListener(n.id),this.listeners.delete(n))}};const u=[{elementType:`labels.icon`,stylers:[{visibility:`off`}]},{stylers:[{saturation:-100},{lightness:-10}]},{featureType:`landscape`,stylers:[{lightness:30}]},{featureType:`road`,elementType:`geometry`,stylers:[{saturation:-100}]}],d=[{elementType:`labels.icon`,stylers:[{visibility:`off`}]},{stylers:[{saturation:-100}]},{elementType:`geometry`,stylers:[{lightness:-45}]},{elementType:`labels.text.fill`,stylers:[{lightness:-100}]},{elementType:`labels.text.stroke`,stylers:[{lightness:-15}]},{featureType:`water`,elementType:`geometry`,stylers:[{lightness:-50}]}];export{d as GoogleMapDarkStyle,u as GoogleMapLightStyle,l as GoogleMapsProvider};
package/package.json CHANGED
@@ -1,48 +1,41 @@
1
1
  {
2
- "name": "@arenarium/maps-integration-google",
3
- "description": "Integration with Google Maps for @arenarium/maps.",
4
- "version": "1.0.19",
5
- "type": "module",
6
- "files": [
7
- "dist"
8
- ],
9
- "module": "./dist/main.js",
10
- "types": "./dist/main.d.ts",
11
- "exports": {
12
- ".": {
13
- "import": {
14
- "types": "./dist/main.d.ts",
15
- "default": "./dist/main.js"
16
- }
17
- },
18
- "./package.json": "./package.json"
19
- },
20
- "license": "MIT",
21
- "author": "arenarium",
22
- "homepage": "https://arenarium.dev",
23
- "keywords": [
24
- "arenarium",
25
- "maps",
26
- "google",
27
- "google maps"
28
- ],
29
- "devDependencies": {
30
- "bunup": "^0.16.31",
31
- "prettier": "^3.8.1"
32
- },
33
- "peerDependencies": {
34
- "@googlemaps/js-api-loader": "^2.0.2",
35
- "@types/google.maps": "^3.58.1"
36
- },
37
- "dependencies": {
38
- "@arenarium/maps-core": "1.0.22"
39
- },
40
- "scripts": {
41
- "lib_google_check": "bunx tsc --noEmit",
42
- "lib_google_build": "bun run lib_google_check && bunup",
43
- "lib_google_patch": "bun pm version patch --no-git-tag-version",
44
- "lib_google_commit": "git add . && git commit -m 'PUBLISH @arenarium/maps-integration-google'",
45
- "lib_google_publish": "bun publish --access public",
46
- "lib_google_package": "bun run lib_google_build && bun run lib_google_patch && bun run lib_google_commit && bun run lib_google_publish"
47
- }
48
- }
2
+ "name": "@arenarium/maps-integration-google",
3
+ "description": "Integration with Google Maps for @arenarium/maps.",
4
+ "version": "1.0.20",
5
+ "type": "module",
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "types": "./dist/main.d.ts",
10
+ "exports": {
11
+ ".": "./dist/main.js",
12
+ "./package.json": "./package.json"
13
+ },
14
+ "license": "MIT",
15
+ "author": "arenarium",
16
+ "homepage": "https://arenarium.dev",
17
+ "keywords": [
18
+ "arenarium",
19
+ "maps",
20
+ "google",
21
+ "google maps"
22
+ ],
23
+ "devDependencies": {
24
+ "tsdown": "^0.21.4",
25
+ "prettier": "^3.8.1"
26
+ },
27
+ "peerDependencies": {
28
+ "@googlemaps/js-api-loader": "^2.0.2",
29
+ "@types/google.maps": "^3.58.1"
30
+ },
31
+ "dependencies": {
32
+ "@arenarium/maps-core": "1.0.25"
33
+ },
34
+ "scripts": {
35
+ "lib_google_check": "pnpm exec tsc --noEmit",
36
+ "lib_google_build": "pnpm run lib_google_check && tsdown",
37
+ "lib_google_patch": "npm version patch --no-git-tag-version",
38
+ "lib_google_publish": "pnpm publish --access public --no-git-checks",
39
+ "lib_google_package": "pnpm run lib_google_build && pnpm run lib_google_patch && pnpm run lib_google_publish"
40
+ }
41
+ }