tetrons 2.3.34 → 2.3.36
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/index.cjs +67 -6
- package/dist/index.d.mts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.mjs +73 -6
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.js +51 -0
- package/dist/src/server/usage.d.ts +2 -0
- package/dist/src/server/usage.js +17 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -5,6 +5,9 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
5
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __esm = (fn, res) => function __init() {
|
|
9
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
10
|
+
};
|
|
8
11
|
var __export = (target, all) => {
|
|
9
12
|
for (var name in all)
|
|
10
13
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -27,11 +30,44 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
27
30
|
));
|
|
28
31
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
32
|
|
|
33
|
+
// src/server/usage.ts
|
|
34
|
+
var usage_exports = {};
|
|
35
|
+
__export(usage_exports, {
|
|
36
|
+
getOrCreateInstallDate: () => getOrCreateInstallDate,
|
|
37
|
+
getRemainingDays: () => getRemainingDays
|
|
38
|
+
});
|
|
39
|
+
function getOrCreateInstallDate() {
|
|
40
|
+
if (import_fs.default.existsSync(USAGE_FILE_PATH)) {
|
|
41
|
+
const data = JSON.parse(import_fs.default.readFileSync(USAGE_FILE_PATH, "utf-8"));
|
|
42
|
+
return new Date(data.installedAt);
|
|
43
|
+
}
|
|
44
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
45
|
+
import_fs.default.writeFileSync(USAGE_FILE_PATH, JSON.stringify({ installedAt: now }));
|
|
46
|
+
return new Date(now);
|
|
47
|
+
}
|
|
48
|
+
function getRemainingDays(installedAt, validityDays) {
|
|
49
|
+
const now = /* @__PURE__ */ new Date();
|
|
50
|
+
const diff = Math.floor(
|
|
51
|
+
(now.getTime() - installedAt.getTime()) / (1e3 * 60 * 60 * 24)
|
|
52
|
+
);
|
|
53
|
+
return validityDays - diff;
|
|
54
|
+
}
|
|
55
|
+
var import_fs, import_path, USAGE_FILE_PATH;
|
|
56
|
+
var init_usage = __esm({
|
|
57
|
+
"src/server/usage.ts"() {
|
|
58
|
+
"use strict";
|
|
59
|
+
import_fs = __toESM(require("fs"));
|
|
60
|
+
import_path = __toESM(require("path"));
|
|
61
|
+
USAGE_FILE_PATH = import_path.default.join(process.cwd(), ".tetrons-usage.json");
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
|
|
30
65
|
// src/index.ts
|
|
31
66
|
var index_exports = {};
|
|
32
67
|
__export(index_exports, {
|
|
33
68
|
EditorContent: () => EditorContent,
|
|
34
69
|
default: () => index_default,
|
|
70
|
+
getTetronsRemainingDays: () => getTetronsRemainingDays,
|
|
35
71
|
getTetronsVersion: () => getTetronsVersion,
|
|
36
72
|
initializeTetrons: () => initializeTetrons,
|
|
37
73
|
isApiKeyValid: () => isApiKeyValid
|
|
@@ -988,11 +1024,11 @@ var ResolvedPos = class _ResolvedPos {
|
|
|
988
1024
|
/**
|
|
989
1025
|
@internal
|
|
990
1026
|
*/
|
|
991
|
-
constructor(pos,
|
|
1027
|
+
constructor(pos, path2, parentOffset) {
|
|
992
1028
|
this.pos = pos;
|
|
993
|
-
this.path =
|
|
1029
|
+
this.path = path2;
|
|
994
1030
|
this.parentOffset = parentOffset;
|
|
995
|
-
this.depth =
|
|
1031
|
+
this.depth = path2.length / 3 - 1;
|
|
996
1032
|
}
|
|
997
1033
|
/**
|
|
998
1034
|
@internal
|
|
@@ -1223,12 +1259,12 @@ var ResolvedPos = class _ResolvedPos {
|
|
|
1223
1259
|
static resolve(doc3, pos) {
|
|
1224
1260
|
if (!(pos >= 0 && pos <= doc3.content.size))
|
|
1225
1261
|
throw new RangeError("Position " + pos + " out of range");
|
|
1226
|
-
let
|
|
1262
|
+
let path2 = [];
|
|
1227
1263
|
let start = 0, parentOffset = pos;
|
|
1228
1264
|
for (let node = doc3; ; ) {
|
|
1229
1265
|
let { index, offset } = node.content.findIndex(parentOffset);
|
|
1230
1266
|
let rem = parentOffset - offset;
|
|
1231
|
-
|
|
1267
|
+
path2.push(node, index, start + offset);
|
|
1232
1268
|
if (!rem)
|
|
1233
1269
|
break;
|
|
1234
1270
|
node = node.child(index);
|
|
@@ -1237,7 +1273,7 @@ var ResolvedPos = class _ResolvedPos {
|
|
|
1237
1273
|
parentOffset = rem - 1;
|
|
1238
1274
|
start += offset + 1;
|
|
1239
1275
|
}
|
|
1240
|
-
return new _ResolvedPos(pos,
|
|
1276
|
+
return new _ResolvedPos(pos, path2, parentOffset);
|
|
1241
1277
|
}
|
|
1242
1278
|
/**
|
|
1243
1279
|
@internal
|
|
@@ -16995,6 +17031,22 @@ async function initializeTetrons(apiKey) {
|
|
|
16995
17031
|
const data = await res.json();
|
|
16996
17032
|
API_VALID = data.valid;
|
|
16997
17033
|
API_VERSION = data.version;
|
|
17034
|
+
if (!API_VALID) {
|
|
17035
|
+
throw new Error("API Key is not valid.");
|
|
17036
|
+
}
|
|
17037
|
+
if (typeof window !== "undefined") {
|
|
17038
|
+
throw new Error("initializeTetrons() must be called server-side.");
|
|
17039
|
+
}
|
|
17040
|
+
const { getOrCreateInstallDate: getOrCreateInstallDate2, getRemainingDays: getRemainingDays2 } = await Promise.resolve().then(() => (init_usage(), usage_exports));
|
|
17041
|
+
const validityDays = API_VERSION === "free" ? 14 : 30;
|
|
17042
|
+
const installedAt = getOrCreateInstallDate2();
|
|
17043
|
+
const remainingDays = getRemainingDays2(installedAt, validityDays);
|
|
17044
|
+
if (remainingDays <= 0) {
|
|
17045
|
+
throw new Error(`Your ${API_VERSION} license has expired.`);
|
|
17046
|
+
}
|
|
17047
|
+
console.log(
|
|
17048
|
+
`[TETRONS] Initialized: ${API_VERSION} | Remaining days: ${remainingDays}`
|
|
17049
|
+
);
|
|
16998
17050
|
}
|
|
16999
17051
|
function getTetronsVersion() {
|
|
17000
17052
|
return API_VERSION;
|
|
@@ -17002,10 +17054,19 @@ function getTetronsVersion() {
|
|
|
17002
17054
|
function isApiKeyValid() {
|
|
17003
17055
|
return API_VALID;
|
|
17004
17056
|
}
|
|
17057
|
+
async function getTetronsRemainingDays() {
|
|
17058
|
+
if (!API_VALID || !API_VERSION) return null;
|
|
17059
|
+
if (typeof window !== "undefined") return null;
|
|
17060
|
+
const { getOrCreateInstallDate: getOrCreateInstallDate2, getRemainingDays: getRemainingDays2 } = await Promise.resolve().then(() => (init_usage(), usage_exports));
|
|
17061
|
+
const validityDays = API_VERSION === "free" ? 14 : 30;
|
|
17062
|
+
const installedAt = getOrCreateInstallDate2();
|
|
17063
|
+
return getRemainingDays2(installedAt, validityDays);
|
|
17064
|
+
}
|
|
17005
17065
|
var index_default = EditorContent;
|
|
17006
17066
|
// Annotate the CommonJS export names for ESM import in node:
|
|
17007
17067
|
0 && (module.exports = {
|
|
17008
17068
|
EditorContent,
|
|
17069
|
+
getTetronsRemainingDays,
|
|
17009
17070
|
getTetronsVersion,
|
|
17010
17071
|
initializeTetrons,
|
|
17011
17072
|
isApiKeyValid
|
package/dist/index.d.mts
CHANGED
|
@@ -8,5 +8,6 @@ declare function EditorContent({ apiKey }: EditorContentProps): React.JSX.Elemen
|
|
|
8
8
|
declare function initializeTetrons(apiKey: string): Promise<void>;
|
|
9
9
|
declare function getTetronsVersion(): "" | "free" | "pro" | "premium" | "platinum";
|
|
10
10
|
declare function isApiKeyValid(): boolean;
|
|
11
|
+
declare function getTetronsRemainingDays(): Promise<number | null>;
|
|
11
12
|
|
|
12
|
-
export { EditorContent, EditorContent as default, getTetronsVersion, initializeTetrons, isApiKeyValid };
|
|
13
|
+
export { EditorContent, EditorContent as default, getTetronsRemainingDays, getTetronsVersion, initializeTetrons, isApiKeyValid };
|
package/dist/index.d.ts
CHANGED
|
@@ -8,5 +8,6 @@ declare function EditorContent({ apiKey }: EditorContentProps): React.JSX.Elemen
|
|
|
8
8
|
declare function initializeTetrons(apiKey: string): Promise<void>;
|
|
9
9
|
declare function getTetronsVersion(): "" | "free" | "pro" | "premium" | "platinum";
|
|
10
10
|
declare function isApiKeyValid(): boolean;
|
|
11
|
+
declare function getTetronsRemainingDays(): Promise<number | null>;
|
|
11
12
|
|
|
12
|
-
export { EditorContent, EditorContent as default, getTetronsVersion, initializeTetrons, isApiKeyValid };
|
|
13
|
+
export { EditorContent, EditorContent as default, getTetronsRemainingDays, getTetronsVersion, initializeTetrons, isApiKeyValid };
|
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,45 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __esm = (fn, res) => function __init() {
|
|
4
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
5
|
+
};
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
// src/server/usage.ts
|
|
12
|
+
var usage_exports = {};
|
|
13
|
+
__export(usage_exports, {
|
|
14
|
+
getOrCreateInstallDate: () => getOrCreateInstallDate,
|
|
15
|
+
getRemainingDays: () => getRemainingDays
|
|
16
|
+
});
|
|
17
|
+
import fs from "fs";
|
|
18
|
+
import path from "path";
|
|
19
|
+
function getOrCreateInstallDate() {
|
|
20
|
+
if (fs.existsSync(USAGE_FILE_PATH)) {
|
|
21
|
+
const data = JSON.parse(fs.readFileSync(USAGE_FILE_PATH, "utf-8"));
|
|
22
|
+
return new Date(data.installedAt);
|
|
23
|
+
}
|
|
24
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
25
|
+
fs.writeFileSync(USAGE_FILE_PATH, JSON.stringify({ installedAt: now }));
|
|
26
|
+
return new Date(now);
|
|
27
|
+
}
|
|
28
|
+
function getRemainingDays(installedAt, validityDays) {
|
|
29
|
+
const now = /* @__PURE__ */ new Date();
|
|
30
|
+
const diff = Math.floor(
|
|
31
|
+
(now.getTime() - installedAt.getTime()) / (1e3 * 60 * 60 * 24)
|
|
32
|
+
);
|
|
33
|
+
return validityDays - diff;
|
|
34
|
+
}
|
|
35
|
+
var USAGE_FILE_PATH;
|
|
36
|
+
var init_usage = __esm({
|
|
37
|
+
"src/server/usage.ts"() {
|
|
38
|
+
"use strict";
|
|
39
|
+
USAGE_FILE_PATH = path.join(process.cwd(), ".tetrons-usage.json");
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
1
43
|
// src/components/tetrons/EditorContent.tsx
|
|
2
44
|
import React14, { useEffect as useEffect8, useRef as useRef7, useState as useState9 } from "react";
|
|
3
45
|
import {
|
|
@@ -951,11 +993,11 @@ var ResolvedPos = class _ResolvedPos {
|
|
|
951
993
|
/**
|
|
952
994
|
@internal
|
|
953
995
|
*/
|
|
954
|
-
constructor(pos,
|
|
996
|
+
constructor(pos, path2, parentOffset) {
|
|
955
997
|
this.pos = pos;
|
|
956
|
-
this.path =
|
|
998
|
+
this.path = path2;
|
|
957
999
|
this.parentOffset = parentOffset;
|
|
958
|
-
this.depth =
|
|
1000
|
+
this.depth = path2.length / 3 - 1;
|
|
959
1001
|
}
|
|
960
1002
|
/**
|
|
961
1003
|
@internal
|
|
@@ -1186,12 +1228,12 @@ var ResolvedPos = class _ResolvedPos {
|
|
|
1186
1228
|
static resolve(doc3, pos) {
|
|
1187
1229
|
if (!(pos >= 0 && pos <= doc3.content.size))
|
|
1188
1230
|
throw new RangeError("Position " + pos + " out of range");
|
|
1189
|
-
let
|
|
1231
|
+
let path2 = [];
|
|
1190
1232
|
let start = 0, parentOffset = pos;
|
|
1191
1233
|
for (let node = doc3; ; ) {
|
|
1192
1234
|
let { index, offset } = node.content.findIndex(parentOffset);
|
|
1193
1235
|
let rem = parentOffset - offset;
|
|
1194
|
-
|
|
1236
|
+
path2.push(node, index, start + offset);
|
|
1195
1237
|
if (!rem)
|
|
1196
1238
|
break;
|
|
1197
1239
|
node = node.child(index);
|
|
@@ -1200,7 +1242,7 @@ var ResolvedPos = class _ResolvedPos {
|
|
|
1200
1242
|
parentOffset = rem - 1;
|
|
1201
1243
|
start += offset + 1;
|
|
1202
1244
|
}
|
|
1203
|
-
return new _ResolvedPos(pos,
|
|
1245
|
+
return new _ResolvedPos(pos, path2, parentOffset);
|
|
1204
1246
|
}
|
|
1205
1247
|
/**
|
|
1206
1248
|
@internal
|
|
@@ -17002,6 +17044,22 @@ async function initializeTetrons(apiKey) {
|
|
|
17002
17044
|
const data = await res.json();
|
|
17003
17045
|
API_VALID = data.valid;
|
|
17004
17046
|
API_VERSION = data.version;
|
|
17047
|
+
if (!API_VALID) {
|
|
17048
|
+
throw new Error("API Key is not valid.");
|
|
17049
|
+
}
|
|
17050
|
+
if (typeof window !== "undefined") {
|
|
17051
|
+
throw new Error("initializeTetrons() must be called server-side.");
|
|
17052
|
+
}
|
|
17053
|
+
const { getOrCreateInstallDate: getOrCreateInstallDate2, getRemainingDays: getRemainingDays2 } = await Promise.resolve().then(() => (init_usage(), usage_exports));
|
|
17054
|
+
const validityDays = API_VERSION === "free" ? 14 : 30;
|
|
17055
|
+
const installedAt = getOrCreateInstallDate2();
|
|
17056
|
+
const remainingDays = getRemainingDays2(installedAt, validityDays);
|
|
17057
|
+
if (remainingDays <= 0) {
|
|
17058
|
+
throw new Error(`Your ${API_VERSION} license has expired.`);
|
|
17059
|
+
}
|
|
17060
|
+
console.log(
|
|
17061
|
+
`[TETRONS] Initialized: ${API_VERSION} | Remaining days: ${remainingDays}`
|
|
17062
|
+
);
|
|
17005
17063
|
}
|
|
17006
17064
|
function getTetronsVersion() {
|
|
17007
17065
|
return API_VERSION;
|
|
@@ -17009,10 +17067,19 @@ function getTetronsVersion() {
|
|
|
17009
17067
|
function isApiKeyValid() {
|
|
17010
17068
|
return API_VALID;
|
|
17011
17069
|
}
|
|
17070
|
+
async function getTetronsRemainingDays() {
|
|
17071
|
+
if (!API_VALID || !API_VERSION) return null;
|
|
17072
|
+
if (typeof window !== "undefined") return null;
|
|
17073
|
+
const { getOrCreateInstallDate: getOrCreateInstallDate2, getRemainingDays: getRemainingDays2 } = await Promise.resolve().then(() => (init_usage(), usage_exports));
|
|
17074
|
+
const validityDays = API_VERSION === "free" ? 14 : 30;
|
|
17075
|
+
const installedAt = getOrCreateInstallDate2();
|
|
17076
|
+
return getRemainingDays2(installedAt, validityDays);
|
|
17077
|
+
}
|
|
17012
17078
|
var index_default = EditorContent;
|
|
17013
17079
|
export {
|
|
17014
17080
|
EditorContent,
|
|
17015
17081
|
index_default as default,
|
|
17082
|
+
getTetronsRemainingDays,
|
|
17016
17083
|
getTetronsVersion,
|
|
17017
17084
|
initializeTetrons,
|
|
17018
17085
|
isApiKeyValid
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import EditorContent from "./components/tetrons/EditorContent";
|
|
2
|
+
export declare function initializeTetrons(apiKey: string): Promise<void>;
|
|
3
|
+
export declare function getTetronsVersion(): "" | "free" | "pro" | "premium" | "platinum";
|
|
4
|
+
export declare function isApiKeyValid(): boolean;
|
|
5
|
+
export declare function getTetronsRemainingDays(): Promise<number | null>;
|
|
6
|
+
export { EditorContent };
|
|
7
|
+
export default EditorContent;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import EditorContent from "./components/tetrons/EditorContent";
|
|
2
|
+
let API_VALID = false;
|
|
3
|
+
let API_VERSION = "";
|
|
4
|
+
export async function initializeTetrons(apiKey) {
|
|
5
|
+
const res = await fetch("https://staging.tetrons.com/api/validate", {
|
|
6
|
+
method: "POST",
|
|
7
|
+
headers: {
|
|
8
|
+
"Content-Type": "application/json",
|
|
9
|
+
},
|
|
10
|
+
body: JSON.stringify({ apiKey }),
|
|
11
|
+
});
|
|
12
|
+
if (!res.ok) {
|
|
13
|
+
const error = await res.json();
|
|
14
|
+
throw new Error(`API Key validation failed: ${error.error}`);
|
|
15
|
+
}
|
|
16
|
+
const data = await res.json();
|
|
17
|
+
API_VALID = data.valid;
|
|
18
|
+
API_VERSION = data.version;
|
|
19
|
+
if (!API_VALID) {
|
|
20
|
+
throw new Error("API Key is not valid.");
|
|
21
|
+
}
|
|
22
|
+
if (typeof window !== "undefined") {
|
|
23
|
+
throw new Error("initializeTetrons() must be called server-side.");
|
|
24
|
+
}
|
|
25
|
+
const { getOrCreateInstallDate, getRemainingDays } = await import("./server/usage.js");
|
|
26
|
+
const validityDays = API_VERSION === "free" ? 14 : 30;
|
|
27
|
+
const installedAt = getOrCreateInstallDate();
|
|
28
|
+
const remainingDays = getRemainingDays(installedAt, validityDays);
|
|
29
|
+
if (remainingDays <= 0) {
|
|
30
|
+
throw new Error(`Your ${API_VERSION} license has expired.`);
|
|
31
|
+
}
|
|
32
|
+
console.log(`[TETRONS] Initialized: ${API_VERSION} | Remaining days: ${remainingDays}`);
|
|
33
|
+
}
|
|
34
|
+
export function getTetronsVersion() {
|
|
35
|
+
return API_VERSION;
|
|
36
|
+
}
|
|
37
|
+
export function isApiKeyValid() {
|
|
38
|
+
return API_VALID;
|
|
39
|
+
}
|
|
40
|
+
export async function getTetronsRemainingDays() {
|
|
41
|
+
if (!API_VALID || !API_VERSION)
|
|
42
|
+
return null;
|
|
43
|
+
if (typeof window !== "undefined")
|
|
44
|
+
return null;
|
|
45
|
+
const { getOrCreateInstallDate, getRemainingDays } = await import("./server/usage.js");
|
|
46
|
+
const validityDays = API_VERSION === "free" ? 14 : 30;
|
|
47
|
+
const installedAt = getOrCreateInstallDate();
|
|
48
|
+
return getRemainingDays(installedAt, validityDays);
|
|
49
|
+
}
|
|
50
|
+
export { EditorContent };
|
|
51
|
+
export default EditorContent;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
const USAGE_FILE_PATH = path.join(process.cwd(), ".tetrons-usage.json");
|
|
4
|
+
export function getOrCreateInstallDate() {
|
|
5
|
+
if (fs.existsSync(USAGE_FILE_PATH)) {
|
|
6
|
+
const data = JSON.parse(fs.readFileSync(USAGE_FILE_PATH, "utf-8"));
|
|
7
|
+
return new Date(data.installedAt);
|
|
8
|
+
}
|
|
9
|
+
const now = new Date().toISOString();
|
|
10
|
+
fs.writeFileSync(USAGE_FILE_PATH, JSON.stringify({ installedAt: now }));
|
|
11
|
+
return new Date(now);
|
|
12
|
+
}
|
|
13
|
+
export function getRemainingDays(installedAt, validityDays) {
|
|
14
|
+
const now = new Date();
|
|
15
|
+
const diff = Math.floor((now.getTime() - installedAt.getTime()) / (1000 * 60 * 60 * 24));
|
|
16
|
+
return validityDays - diff;
|
|
17
|
+
}
|