canvas-globe 1.0.0-beta.3 → 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.
- package/CHANGELOG.md +14 -4
- package/LICENSING.md +3 -3
- package/README.md +6 -6
- package/codemeta.json +1 -1
- package/dist/canvas-globe.umd.js +5 -5
- package/package.json +1 -1
- package/src/index.js +0 -1
- package/src/license.js +3 -3
- package/src/version.js +1 -1
- package/types/index.d.ts +1 -3
package/CHANGELOG.md
CHANGED
|
@@ -6,14 +6,24 @@ All notable changes to this package are documented here. The format follows
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [1.0.0] - 2026-09-17
|
|
10
|
+
|
|
11
|
+
- Released the first stable commercial version of CanvasGlobe.
|
|
12
|
+
- Added a professional in-canvas licensing panel, a persistent unlicensed
|
|
13
|
+
watermark and a direct purchase action for public production use.
|
|
14
|
+
- Kept license checks local, with no license-server request or package
|
|
15
|
+
telemetry.
|
|
16
|
+
- Simplified license-key setup across public documentation, generated starter
|
|
17
|
+
guidance, type declarations and customer-facing messages.
|
|
18
|
+
|
|
9
19
|
## [1.0.0-beta.3] - 2026-09-17
|
|
10
20
|
|
|
11
21
|
- Replaced the small production license badge with a professional in-canvas
|
|
12
22
|
license panel containing purchase, preview and existing-key actions.
|
|
13
23
|
- Added a persistent unlicensed watermark and purchase ribbon after the panel
|
|
14
24
|
is dismissed, while keeping the globe interactive.
|
|
15
|
-
- Simplified customer-facing runtime copy to refer to the
|
|
16
|
-
|
|
25
|
+
- Simplified customer-facing runtime copy to refer only to the supplied
|
|
26
|
+
license key.
|
|
17
27
|
|
|
18
28
|
## [1.0.0-beta.2] - 2026-09-17
|
|
19
29
|
|
|
@@ -24,8 +34,8 @@ All notable changes to this package are documented here. The format follows
|
|
|
24
34
|
|
|
25
35
|
## [1.0.0-beta.1] - 2026-09-16
|
|
26
36
|
|
|
27
|
-
- Prepared an opt-in proprietary 1.x licensing model with a local
|
|
28
|
-
|
|
37
|
+
- Prepared an opt-in proprietary 1.x licensing model with a local license-key
|
|
38
|
+
check and an in-component purchase notice for unlicensed
|
|
29
39
|
production use.
|
|
30
40
|
- Added commercial release safeguards and coordinated migration tools without
|
|
31
41
|
introducing license-server or visitor-analytics requests.
|
package/LICENSING.md
CHANGED
|
@@ -17,12 +17,12 @@ Add the license key supplied after purchase to your CanvasGlobe options:
|
|
|
17
17
|
|
|
18
18
|
```js
|
|
19
19
|
createGlobe(canvas, {
|
|
20
|
-
licenseKey: "
|
|
20
|
+
licenseKey: "your-license-key",
|
|
21
21
|
});
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
CanvasGlobe checks the key locally.
|
|
25
|
-
|
|
24
|
+
CanvasGlobe checks the supplied key locally. The package makes no
|
|
25
|
+
license-server request and sends no visitor analytics.
|
|
26
26
|
|
|
27
27
|
Public production use without a valid key displays a small in-canvas licensing
|
|
28
28
|
notice and a browser-console warning. Local development remains functional so
|
package/README.md
CHANGED
|
@@ -69,13 +69,13 @@ CanvasGlobe 1.0 and later are proprietary commercial software. Purchase a
|
|
|
69
69
|
[Solo, Team, Business, or OEM license](https://canvasglobe.swiftools.com/pricing)
|
|
70
70
|
before production use or redistribution.
|
|
71
71
|
|
|
72
|
-
Add the license key supplied after purchase to the CanvasGlobe options.
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
Add the license key supplied after purchase to the CanvasGlobe options. The
|
|
73
|
+
check runs locally, and websites using CanvasGlobe make no license-server or
|
|
74
|
+
analytics requests to Swiftools:
|
|
75
75
|
|
|
76
76
|
```js
|
|
77
77
|
createGlobe(canvas, {
|
|
78
|
-
licenseKey: "
|
|
78
|
+
licenseKey: "your-license-key",
|
|
79
79
|
});
|
|
80
80
|
```
|
|
81
81
|
|
|
@@ -238,7 +238,7 @@ To scaffold a complete starter for React, Next.js, Vue, SvelteKit, Vanilla
|
|
|
238
238
|
JavaScript, or Web Components, run:
|
|
239
239
|
|
|
240
240
|
```bash
|
|
241
|
-
npm create canvas-globe
|
|
241
|
+
npm create canvas-globe my-globe
|
|
242
242
|
```
|
|
243
243
|
|
|
244
244
|
### AI-assisted setup
|
|
@@ -255,7 +255,7 @@ Or copy the maintained prompt from the [AI-assisted setup guide](https://canvasg
|
|
|
255
255
|
|
|
256
256
|
| Option | Default | Description |
|
|
257
257
|
| --- | --- | --- |
|
|
258
|
-
| `licenseKey` | `null` | Commercial license key supplied after purchase
|
|
258
|
+
| `licenseKey` | `null` | Commercial license key supplied after purchase |
|
|
259
259
|
| `mode` | `"globe"` | `"globe"` (orthographic, spinnable) or `"map"` (flat) |
|
|
260
260
|
| `projection` | `"equirectangular"` | Flat-map projection: also `"mercator"`, `"naturalEarth"` |
|
|
261
261
|
| `preset` | Not set | Named bundle of theme + render style, applied under your options |
|
package/codemeta.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"identifier": "canvas-globe",
|
|
6
6
|
"description": "CanvasGlobe helps developers add interactive 3D globes and flat world maps to JavaScript and React apps with Canvas 2D, without WebGL, map tiles, API keys, or runtime network calls.",
|
|
7
7
|
"url": "https://canvasglobe.swiftools.com/",
|
|
8
|
-
"version": "1.0.0
|
|
8
|
+
"version": "1.0.0",
|
|
9
9
|
"codeRepository": "https://github.com/Shree-hari/canvas-globe",
|
|
10
10
|
"issueTracker": "https://github.com/Shree-hari/canvas-globe/issues",
|
|
11
11
|
"downloadUrl": "https://www.npmjs.com/package/canvas-globe",
|
package/dist/canvas-globe.umd.js
CHANGED
|
@@ -1314,12 +1314,12 @@ function drawFitted(ctx, media, box) {
|
|
|
1314
1314
|
}
|
|
1315
1315
|
|
|
1316
1316
|
// Keep in sync with package.json. Release checks enforce this value.
|
|
1317
|
-
const CANVAS_GLOBE_VERSION = "1.0.0
|
|
1317
|
+
const CANVAS_GLOBE_VERSION = "1.0.0";
|
|
1318
1318
|
|
|
1319
1319
|
/** Local license-key checks and production-use presentation helpers. */
|
|
1320
1320
|
|
|
1321
1321
|
const DEFAULT_LICENSE_KEY = "0000-0000-000-0000";
|
|
1322
|
-
const
|
|
1322
|
+
const LICENSE_KEY_MARKER = String.fromCharCode(71, 76, 79);
|
|
1323
1323
|
const LICENSE_PAGE_URL =
|
|
1324
1324
|
"https://canvasglobe.swiftools.com/pricing?utm_source=canvas-globe&utm_medium=runtime-notice";
|
|
1325
1325
|
const LICENSE_SETUP_URL =
|
|
@@ -1357,13 +1357,13 @@ function inspectRuntime(locationValue = globalThis.location) {
|
|
|
1357
1357
|
return { kind: local ? "development" : "production", hostname, public: !local };
|
|
1358
1358
|
}
|
|
1359
1359
|
|
|
1360
|
-
/** Checks a license key
|
|
1360
|
+
/** Checks whether a supplied commercial license key has an accepted format. */
|
|
1361
1361
|
function inspectLicenseKey(value, mode = COMMERCIAL_LICENSE_MODE) {
|
|
1362
1362
|
const key = normalizeLicenseKey(value);
|
|
1363
1363
|
if (!key) return { valid: false, kind: "missing", key: "" };
|
|
1364
1364
|
if (key === DEFAULT_LICENSE_KEY) return { valid: false, kind: "placeholder", key };
|
|
1365
1365
|
if (!mode) return { valid: true, kind: "provided", key };
|
|
1366
|
-
if (key.startsWith(
|
|
1366
|
+
if (key.startsWith(LICENSE_KEY_MARKER) && key.length > LICENSE_KEY_MARKER.length) {
|
|
1367
1367
|
return { valid: true, kind: "licensed", key };
|
|
1368
1368
|
}
|
|
1369
1369
|
return { valid: false, kind: "invalid", key: "" };
|
|
@@ -4646,5 +4646,5 @@ function defineGeoGlobe(tag = "geo-globe") {
|
|
|
4646
4646
|
defineGeoGlobe();
|
|
4647
4647
|
|
|
4648
4648
|
const CanvasGlobe = GeoGlobe; const createCanvasGlobe = createGlobe;
|
|
4649
|
-
return { GeoGlobe, CanvasGlobe, createGlobe, createCanvasGlobe, GeoGlobeElement, defineGeoGlobe, themes, presets, scenes, countryPalette, exportPresets, exportSize, fromCSV, fromRows, parseCSV, geocode, countryPoint, locateViewer, locateViewerPrecise, timeZoneLocation, countryLocation, placeLocation, recordCanvas, downloadBlob, canRecord, supportedRecordingType, SphereTexture, Media, mapAspect, colorScale, subsolarPoint, greatCircle, angularDistance, pointInGeometry, geometryBounds, projections, world, DEFAULT_LICENSE_KEY,
|
|
4649
|
+
return { GeoGlobe, CanvasGlobe, createGlobe, createCanvasGlobe, GeoGlobeElement, defineGeoGlobe, themes, presets, scenes, countryPalette, exportPresets, exportSize, fromCSV, fromRows, parseCSV, geocode, countryPoint, locateViewer, locateViewerPrecise, timeZoneLocation, countryLocation, placeLocation, recordCanvas, downloadBlob, canRecord, supportedRecordingType, SphereTexture, Media, mapAspect, colorScale, subsolarPoint, greatCircle, angularDistance, pointInGeometry, geometryBounds, projections, world, DEFAULT_LICENSE_KEY, LICENSE_PAGE_URL, inspectRuntime, inspectLicenseKey, verifyLicenseKey, hasLicenseKey, default: createGlobe };
|
|
4650
4650
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "canvas-globe",
|
|
3
|
-
"version": "1.0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Build interactive 3D globes and flat world maps in JavaScript or React with Canvas 2D, without WebGL, map tiles, API keys, or runtime network calls.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": {
|
package/src/index.js
CHANGED
package/src/license.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Local license-key checks and production-use presentation helpers. */
|
|
2
2
|
|
|
3
3
|
export const DEFAULT_LICENSE_KEY = "0000-0000-000-0000";
|
|
4
|
-
|
|
4
|
+
const LICENSE_KEY_MARKER = String.fromCharCode(71, 76, 79);
|
|
5
5
|
export const LICENSE_PAGE_URL =
|
|
6
6
|
"https://canvasglobe.swiftools.com/pricing?utm_source=canvas-globe&utm_medium=runtime-notice";
|
|
7
7
|
export const LICENSE_SETUP_URL =
|
|
@@ -39,13 +39,13 @@ export function inspectRuntime(locationValue = globalThis.location) {
|
|
|
39
39
|
return { kind: local ? "development" : "production", hostname, public: !local };
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
/** Checks a license key
|
|
42
|
+
/** Checks whether a supplied commercial license key has an accepted format. */
|
|
43
43
|
export function inspectLicenseKey(value, mode = COMMERCIAL_LICENSE_MODE) {
|
|
44
44
|
const key = normalizeLicenseKey(value);
|
|
45
45
|
if (!key) return { valid: false, kind: "missing", key: "" };
|
|
46
46
|
if (key === DEFAULT_LICENSE_KEY) return { valid: false, kind: "placeholder", key };
|
|
47
47
|
if (!mode) return { valid: true, kind: "provided", key };
|
|
48
|
-
if (key.startsWith(
|
|
48
|
+
if (key.startsWith(LICENSE_KEY_MARKER) && key.length > LICENSE_KEY_MARKER.length) {
|
|
49
49
|
return { valid: true, kind: "licensed", key };
|
|
50
50
|
}
|
|
51
51
|
return { valid: false, kind: "invalid", key: "" };
|
package/src/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Keep in sync with package.json. Release checks enforce this value.
|
|
2
|
-
export const CANVAS_GLOBE_VERSION = "1.0.0
|
|
2
|
+
export const CANVAS_GLOBE_VERSION = "1.0.0";
|
package/types/index.d.ts
CHANGED
|
@@ -381,7 +381,7 @@ export interface RenderMarkerContext {
|
|
|
381
381
|
export type TooltipKind = "marker" | "cluster" | "country";
|
|
382
382
|
|
|
383
383
|
export interface GeoGlobeOptions {
|
|
384
|
-
/** Commercial license key supplied after purchase.
|
|
384
|
+
/** Commercial license key supplied after purchase. */
|
|
385
385
|
licenseKey?: string | null;
|
|
386
386
|
/** "globe" (orthographic, spinnable) or "map" (flat). Default "globe". */
|
|
387
387
|
mode?: "globe" | "map";
|
|
@@ -606,8 +606,6 @@ export { GeoGlobe as CanvasGlobe };
|
|
|
606
606
|
/** Brand-aligned alias for `createGlobe`. */
|
|
607
607
|
export { createGlobe as createCanvasGlobe };
|
|
608
608
|
export declare const DEFAULT_LICENSE_KEY: "0000-0000-000-0000";
|
|
609
|
-
/** Prefix used by CanvasGlobe commercial license keys. */
|
|
610
|
-
export declare const LICENSE_KEY_PREFIX: "GLO";
|
|
611
609
|
/** Canonical licensing page used by CanvasGlobe notices. */
|
|
612
610
|
export declare const LICENSE_PAGE_URL: string;
|
|
613
611
|
export declare const LICENSE_SETUP_URL: string;
|