tetrons 2.3.34 → 2.3.35

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
@@ -32,6 +32,7 @@ var index_exports = {};
32
32
  __export(index_exports, {
33
33
  EditorContent: () => EditorContent,
34
34
  default: () => index_default,
35
+ getTetronsRemainingDays: () => getTetronsRemainingDays,
35
36
  getTetronsVersion: () => getTetronsVersion,
36
37
  initializeTetrons: () => initializeTetrons,
37
38
  isApiKeyValid: () => isApiKeyValid
@@ -988,11 +989,11 @@ var ResolvedPos = class _ResolvedPos {
988
989
  /**
989
990
  @internal
990
991
  */
991
- constructor(pos, path, parentOffset) {
992
+ constructor(pos, path2, parentOffset) {
992
993
  this.pos = pos;
993
- this.path = path;
994
+ this.path = path2;
994
995
  this.parentOffset = parentOffset;
995
- this.depth = path.length / 3 - 1;
996
+ this.depth = path2.length / 3 - 1;
996
997
  }
997
998
  /**
998
999
  @internal
@@ -1223,12 +1224,12 @@ var ResolvedPos = class _ResolvedPos {
1223
1224
  static resolve(doc3, pos) {
1224
1225
  if (!(pos >= 0 && pos <= doc3.content.size))
1225
1226
  throw new RangeError("Position " + pos + " out of range");
1226
- let path = [];
1227
+ let path2 = [];
1227
1228
  let start = 0, parentOffset = pos;
1228
1229
  for (let node = doc3; ; ) {
1229
1230
  let { index, offset } = node.content.findIndex(parentOffset);
1230
1231
  let rem = parentOffset - offset;
1231
- path.push(node, index, start + offset);
1232
+ path2.push(node, index, start + offset);
1232
1233
  if (!rem)
1233
1234
  break;
1234
1235
  node = node.child(index);
@@ -1237,7 +1238,7 @@ var ResolvedPos = class _ResolvedPos {
1237
1238
  parentOffset = rem - 1;
1238
1239
  start += offset + 1;
1239
1240
  }
1240
- return new _ResolvedPos(pos, path, parentOffset);
1241
+ return new _ResolvedPos(pos, path2, parentOffset);
1241
1242
  }
1242
1243
  /**
1243
1244
  @internal
@@ -16978,8 +16979,27 @@ function EditorContent({ apiKey }) {
16978
16979
  }
16979
16980
 
16980
16981
  // src/index.ts
16982
+ var import_fs = __toESM(require("fs"));
16983
+ var import_path = __toESM(require("path"));
16981
16984
  var API_VALID = false;
16982
16985
  var API_VERSION = "";
16986
+ var USAGE_FILE_PATH = import_path.default.join(process.cwd(), ".tetrons-usage.json");
16987
+ function getOrCreateInstallDate() {
16988
+ if (import_fs.default.existsSync(USAGE_FILE_PATH)) {
16989
+ const data = JSON.parse(import_fs.default.readFileSync(USAGE_FILE_PATH, "utf-8"));
16990
+ return new Date(data.installedAt);
16991
+ }
16992
+ const now = (/* @__PURE__ */ new Date()).toISOString();
16993
+ import_fs.default.writeFileSync(USAGE_FILE_PATH, JSON.stringify({ installedAt: now }));
16994
+ return new Date(now);
16995
+ }
16996
+ function getRemainingDays(installedAt, validityDays) {
16997
+ const now = /* @__PURE__ */ new Date();
16998
+ const diff = Math.floor(
16999
+ (now.getTime() - installedAt.getTime()) / (1e3 * 60 * 60 * 24)
17000
+ );
17001
+ return validityDays - diff;
17002
+ }
16983
17003
  async function initializeTetrons(apiKey) {
16984
17004
  const res = await fetch("https://staging.tetrons.com/api/validate", {
16985
17005
  method: "POST",
@@ -16995,6 +17015,18 @@ async function initializeTetrons(apiKey) {
16995
17015
  const data = await res.json();
16996
17016
  API_VALID = data.valid;
16997
17017
  API_VERSION = data.version;
17018
+ if (!API_VALID) {
17019
+ throw new Error("API Key is not valid.");
17020
+ }
17021
+ const validityDays = API_VERSION === "free" ? 14 : 30;
17022
+ const installedAt = getOrCreateInstallDate();
17023
+ const remainingDays = getRemainingDays(installedAt, validityDays);
17024
+ if (remainingDays <= 0) {
17025
+ throw new Error(`Your ${API_VERSION} license has expired.`);
17026
+ }
17027
+ console.log(
17028
+ `[TETRONS] Initialized: ${API_VERSION} | Remaining days: ${remainingDays}`
17029
+ );
16998
17030
  }
16999
17031
  function getTetronsVersion() {
17000
17032
  return API_VERSION;
@@ -17002,10 +17034,17 @@ function getTetronsVersion() {
17002
17034
  function isApiKeyValid() {
17003
17035
  return API_VALID;
17004
17036
  }
17037
+ function getTetronsRemainingDays() {
17038
+ if (!API_VALID || !API_VERSION) return null;
17039
+ const validityDays = API_VERSION === "free" ? 14 : 30;
17040
+ const installedAt = getOrCreateInstallDate();
17041
+ return getRemainingDays(installedAt, validityDays);
17042
+ }
17005
17043
  var index_default = EditorContent;
17006
17044
  // Annotate the CommonJS export names for ESM import in node:
17007
17045
  0 && (module.exports = {
17008
17046
  EditorContent,
17047
+ getTetronsRemainingDays,
17009
17048
  getTetronsVersion,
17010
17049
  initializeTetrons,
17011
17050
  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(): 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(): 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
@@ -951,11 +951,11 @@ var ResolvedPos = class _ResolvedPos {
951
951
  /**
952
952
  @internal
953
953
  */
954
- constructor(pos, path, parentOffset) {
954
+ constructor(pos, path2, parentOffset) {
955
955
  this.pos = pos;
956
- this.path = path;
956
+ this.path = path2;
957
957
  this.parentOffset = parentOffset;
958
- this.depth = path.length / 3 - 1;
958
+ this.depth = path2.length / 3 - 1;
959
959
  }
960
960
  /**
961
961
  @internal
@@ -1186,12 +1186,12 @@ var ResolvedPos = class _ResolvedPos {
1186
1186
  static resolve(doc3, pos) {
1187
1187
  if (!(pos >= 0 && pos <= doc3.content.size))
1188
1188
  throw new RangeError("Position " + pos + " out of range");
1189
- let path = [];
1189
+ let path2 = [];
1190
1190
  let start = 0, parentOffset = pos;
1191
1191
  for (let node = doc3; ; ) {
1192
1192
  let { index, offset } = node.content.findIndex(parentOffset);
1193
1193
  let rem = parentOffset - offset;
1194
- path.push(node, index, start + offset);
1194
+ path2.push(node, index, start + offset);
1195
1195
  if (!rem)
1196
1196
  break;
1197
1197
  node = node.child(index);
@@ -1200,7 +1200,7 @@ var ResolvedPos = class _ResolvedPos {
1200
1200
  parentOffset = rem - 1;
1201
1201
  start += offset + 1;
1202
1202
  }
1203
- return new _ResolvedPos(pos, path, parentOffset);
1203
+ return new _ResolvedPos(pos, path2, parentOffset);
1204
1204
  }
1205
1205
  /**
1206
1206
  @internal
@@ -16985,8 +16985,27 @@ function EditorContent({ apiKey }) {
16985
16985
  }
16986
16986
 
16987
16987
  // src/index.ts
16988
+ import fs from "fs";
16989
+ import path from "path";
16988
16990
  var API_VALID = false;
16989
16991
  var API_VERSION = "";
16992
+ var USAGE_FILE_PATH = path.join(process.cwd(), ".tetrons-usage.json");
16993
+ function getOrCreateInstallDate() {
16994
+ if (fs.existsSync(USAGE_FILE_PATH)) {
16995
+ const data = JSON.parse(fs.readFileSync(USAGE_FILE_PATH, "utf-8"));
16996
+ return new Date(data.installedAt);
16997
+ }
16998
+ const now = (/* @__PURE__ */ new Date()).toISOString();
16999
+ fs.writeFileSync(USAGE_FILE_PATH, JSON.stringify({ installedAt: now }));
17000
+ return new Date(now);
17001
+ }
17002
+ function getRemainingDays(installedAt, validityDays) {
17003
+ const now = /* @__PURE__ */ new Date();
17004
+ const diff = Math.floor(
17005
+ (now.getTime() - installedAt.getTime()) / (1e3 * 60 * 60 * 24)
17006
+ );
17007
+ return validityDays - diff;
17008
+ }
16990
17009
  async function initializeTetrons(apiKey) {
16991
17010
  const res = await fetch("https://staging.tetrons.com/api/validate", {
16992
17011
  method: "POST",
@@ -17002,6 +17021,18 @@ async function initializeTetrons(apiKey) {
17002
17021
  const data = await res.json();
17003
17022
  API_VALID = data.valid;
17004
17023
  API_VERSION = data.version;
17024
+ if (!API_VALID) {
17025
+ throw new Error("API Key is not valid.");
17026
+ }
17027
+ const validityDays = API_VERSION === "free" ? 14 : 30;
17028
+ const installedAt = getOrCreateInstallDate();
17029
+ const remainingDays = getRemainingDays(installedAt, validityDays);
17030
+ if (remainingDays <= 0) {
17031
+ throw new Error(`Your ${API_VERSION} license has expired.`);
17032
+ }
17033
+ console.log(
17034
+ `[TETRONS] Initialized: ${API_VERSION} | Remaining days: ${remainingDays}`
17035
+ );
17005
17036
  }
17006
17037
  function getTetronsVersion() {
17007
17038
  return API_VERSION;
@@ -17009,10 +17040,17 @@ function getTetronsVersion() {
17009
17040
  function isApiKeyValid() {
17010
17041
  return API_VALID;
17011
17042
  }
17043
+ function getTetronsRemainingDays() {
17044
+ if (!API_VALID || !API_VERSION) return null;
17045
+ const validityDays = API_VERSION === "free" ? 14 : 30;
17046
+ const installedAt = getOrCreateInstallDate();
17047
+ return getRemainingDays(installedAt, validityDays);
17048
+ }
17012
17049
  var index_default = EditorContent;
17013
17050
  export {
17014
17051
  EditorContent,
17015
17052
  index_default as default,
17053
+ getTetronsRemainingDays,
17016
17054
  getTetronsVersion,
17017
17055
  initializeTetrons,
17018
17056
  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(): number | null;
6
+ export { EditorContent };
7
+ export default EditorContent;
@@ -0,0 +1,61 @@
1
+ import EditorContent from "./components/tetrons/EditorContent";
2
+ import fs from "fs";
3
+ import path from "path";
4
+ let API_VALID = false;
5
+ let API_VERSION = "";
6
+ const USAGE_FILE_PATH = path.join(process.cwd(), ".tetrons-usage.json");
7
+ function getOrCreateInstallDate() {
8
+ if (fs.existsSync(USAGE_FILE_PATH)) {
9
+ const data = JSON.parse(fs.readFileSync(USAGE_FILE_PATH, "utf-8"));
10
+ return new Date(data.installedAt);
11
+ }
12
+ const now = new Date().toISOString();
13
+ fs.writeFileSync(USAGE_FILE_PATH, JSON.stringify({ installedAt: now }));
14
+ return new Date(now);
15
+ }
16
+ function getRemainingDays(installedAt, validityDays) {
17
+ const now = new Date();
18
+ const diff = Math.floor((now.getTime() - installedAt.getTime()) / (1000 * 60 * 60 * 24));
19
+ return validityDays - diff;
20
+ }
21
+ export async function initializeTetrons(apiKey) {
22
+ const res = await fetch("https://staging.tetrons.com/api/validate", {
23
+ method: "POST",
24
+ headers: {
25
+ "Content-Type": "application/json",
26
+ },
27
+ body: JSON.stringify({ apiKey }),
28
+ });
29
+ if (!res.ok) {
30
+ const error = await res.json();
31
+ throw new Error(`API Key validation failed: ${error.error}`);
32
+ }
33
+ const data = await res.json();
34
+ API_VALID = data.valid;
35
+ API_VERSION = data.version;
36
+ if (!API_VALID) {
37
+ throw new Error("API Key is not valid.");
38
+ }
39
+ const validityDays = API_VERSION === "free" ? 14 : 30;
40
+ const installedAt = getOrCreateInstallDate();
41
+ const remainingDays = getRemainingDays(installedAt, validityDays);
42
+ if (remainingDays <= 0) {
43
+ throw new Error(`Your ${API_VERSION} license has expired.`);
44
+ }
45
+ console.log(`[TETRONS] Initialized: ${API_VERSION} | Remaining days: ${remainingDays}`);
46
+ }
47
+ export function getTetronsVersion() {
48
+ return API_VERSION;
49
+ }
50
+ export function isApiKeyValid() {
51
+ return API_VALID;
52
+ }
53
+ export function getTetronsRemainingDays() {
54
+ if (!API_VALID || !API_VERSION)
55
+ return null;
56
+ const validityDays = API_VERSION === "free" ? 14 : 30;
57
+ const installedAt = getOrCreateInstallDate();
58
+ return getRemainingDays(installedAt, validityDays);
59
+ }
60
+ export { EditorContent };
61
+ export default EditorContent;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tetrons",
3
- "version": "2.3.34",
3
+ "version": "2.3.35",
4
4
  "description": "A Next.js project written in TypeScript",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",