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 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, path, parentOffset) {
1027
+ constructor(pos, path2, parentOffset) {
992
1028
  this.pos = pos;
993
- this.path = path;
1029
+ this.path = path2;
994
1030
  this.parentOffset = parentOffset;
995
- this.depth = path.length / 3 - 1;
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 path = [];
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
- path.push(node, index, start + offset);
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, path, parentOffset);
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, path, parentOffset) {
996
+ constructor(pos, path2, parentOffset) {
955
997
  this.pos = pos;
956
- this.path = path;
998
+ this.path = path2;
957
999
  this.parentOffset = parentOffset;
958
- this.depth = path.length / 3 - 1;
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 path = [];
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
- path.push(node, index, start + offset);
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, path, parentOffset);
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,2 @@
1
+ export declare function getOrCreateInstallDate(): Date;
2
+ export declare function getRemainingDays(installedAt: Date, validityDays: number): number;
@@ -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
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tetrons",
3
- "version": "2.3.34",
3
+ "version": "2.3.36",
4
4
  "description": "A Next.js project written in TypeScript",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",