tetrons 2.3.72 → 2.3.73
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/app/api/ai-action/route.cjs +9 -34
- package/dist/app/api/ai-action/route.d.mts +9 -0
- package/dist/app/api/ai-action/route.d.ts +9 -0
- package/dist/app/api/export/route.cjs +4 -29
- package/dist/app/api/export/route.d.mts +3 -0
- package/dist/app/api/export/route.d.ts +3 -0
- package/dist/app/api/register/route.cjs +14 -76
- package/dist/app/api/register/route.d.mts +10 -0
- package/dist/app/api/register/route.d.ts +10 -0
- package/dist/app/api/register/route.mjs +5 -32
- package/dist/app/api/save/route.cjs +13 -48
- package/dist/app/api/save/route.d.mts +9 -0
- package/dist/app/api/save/route.d.ts +9 -0
- package/dist/app/api/transcribe/route.cjs +12 -38
- package/dist/app/api/transcribe/route.d.mts +10 -0
- package/dist/app/api/transcribe/route.d.ts +10 -0
- package/dist/app/api/validate/route.cjs +14 -79
- package/dist/app/api/validate/route.d.mts +13 -0
- package/dist/app/api/validate/route.d.ts +13 -0
- package/dist/app/api/validate/route.mjs +5 -34
- package/dist/chunk-37LFEKRW.cjs +36 -0
- package/dist/chunk-M2F2EU6B.mjs +36 -0
- package/dist/components/tetrons/EditorContent.tsx +17 -5
- package/dist/{browser.browser.js → index.cjs} +525 -440
- package/dist/index.d.mts +13 -0
- package/dist/index.d.ts +13 -0
- package/dist/{node.node.mjs → index.mjs} +51 -68
- package/package.json +9 -19
- package/dist/browser.d.mts +0 -8
- package/dist/node.node.cjs +0 -17090
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
type EditorContentProps = {
|
|
4
|
+
apiKey: string;
|
|
5
|
+
};
|
|
6
|
+
declare function EditorContent({ apiKey }: EditorContentProps): React.JSX.Element;
|
|
7
|
+
|
|
8
|
+
declare function initializeTetrons(apiKey: string): Promise<void>;
|
|
9
|
+
declare function getTetronsVersion(): "" | "free" | "pro" | "premium" | "platinum";
|
|
10
|
+
declare function isApiKeyValid(): boolean;
|
|
11
|
+
declare function getTetronsRemainingDays(): Promise<number | null>;
|
|
12
|
+
|
|
13
|
+
export { EditorContent, EditorContent as default, getTetronsRemainingDays, getTetronsVersion, initializeTetrons, isApiKeyValid };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
type EditorContentProps = {
|
|
4
|
+
apiKey: string;
|
|
5
|
+
};
|
|
6
|
+
declare function EditorContent({ apiKey }: EditorContentProps): React.JSX.Element;
|
|
7
|
+
|
|
8
|
+
declare function initializeTetrons(apiKey: string): Promise<void>;
|
|
9
|
+
declare function getTetronsVersion(): "" | "free" | "pro" | "premium" | "platinum";
|
|
10
|
+
declare function isApiKeyValid(): boolean;
|
|
11
|
+
declare function getTetronsRemainingDays(): Promise<number | null>;
|
|
12
|
+
|
|
13
|
+
export { EditorContent, EditorContent as default, getTetronsRemainingDays, getTetronsVersion, initializeTetrons, isApiKeyValid };
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
// src/index.nodeimpl.ts
|
|
2
|
-
import fs from "fs";
|
|
3
|
-
import path from "path";
|
|
4
|
-
|
|
5
1
|
// src/components/tetrons/EditorContent.tsx
|
|
6
2
|
import React14, { useEffect as useEffect8, useRef as useRef7, useState as useState9 } from "react";
|
|
7
3
|
import {
|
|
@@ -9,14 +5,6 @@ import {
|
|
|
9
5
|
EditorContent as TiptapEditorContent
|
|
10
6
|
} from "@tiptap/react";
|
|
11
7
|
|
|
12
|
-
// src/utils/getEnv.ts
|
|
13
|
-
function getEnv(key, fallback = "") {
|
|
14
|
-
if (typeof process !== "undefined") {
|
|
15
|
-
return process.env[key] || fallback;
|
|
16
|
-
}
|
|
17
|
-
return fallback;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
8
|
// node_modules/@tiptap/extension-document/dist/index.js
|
|
21
9
|
import { Node } from "@tiptap/core";
|
|
22
10
|
var Document = Node.create({
|
|
@@ -963,11 +951,11 @@ var ResolvedPos = class _ResolvedPos {
|
|
|
963
951
|
/**
|
|
964
952
|
@internal
|
|
965
953
|
*/
|
|
966
|
-
constructor(pos,
|
|
954
|
+
constructor(pos, path, parentOffset) {
|
|
967
955
|
this.pos = pos;
|
|
968
|
-
this.path =
|
|
956
|
+
this.path = path;
|
|
969
957
|
this.parentOffset = parentOffset;
|
|
970
|
-
this.depth =
|
|
958
|
+
this.depth = path.length / 3 - 1;
|
|
971
959
|
}
|
|
972
960
|
/**
|
|
973
961
|
@internal
|
|
@@ -1198,12 +1186,12 @@ var ResolvedPos = class _ResolvedPos {
|
|
|
1198
1186
|
static resolve(doc3, pos) {
|
|
1199
1187
|
if (!(pos >= 0 && pos <= doc3.content.size))
|
|
1200
1188
|
throw new RangeError("Position " + pos + " out of range");
|
|
1201
|
-
let
|
|
1189
|
+
let path = [];
|
|
1202
1190
|
let start = 0, parentOffset = pos;
|
|
1203
1191
|
for (let node = doc3; ; ) {
|
|
1204
1192
|
let { index, offset } = node.content.findIndex(parentOffset);
|
|
1205
1193
|
let rem = parentOffset - offset;
|
|
1206
|
-
|
|
1194
|
+
path.push(node, index, start + offset);
|
|
1207
1195
|
if (!rem)
|
|
1208
1196
|
break;
|
|
1209
1197
|
node = node.child(index);
|
|
@@ -1212,7 +1200,7 @@ var ResolvedPos = class _ResolvedPos {
|
|
|
1212
1200
|
parentOffset = rem - 1;
|
|
1213
1201
|
start += offset + 1;
|
|
1214
1202
|
}
|
|
1215
|
-
return new _ResolvedPos(pos,
|
|
1203
|
+
return new _ResolvedPos(pos, path, parentOffset);
|
|
1216
1204
|
}
|
|
1217
1205
|
/**
|
|
1218
1206
|
@internal
|
|
@@ -11516,16 +11504,16 @@ editHandlers.drop = (view, _event) => {
|
|
|
11516
11504
|
tr.deleteSelection();
|
|
11517
11505
|
}
|
|
11518
11506
|
let pos = tr.mapping.map(insertPos);
|
|
11519
|
-
let
|
|
11507
|
+
let isNode2 = slice2.openStart == 0 && slice2.openEnd == 0 && slice2.content.childCount == 1;
|
|
11520
11508
|
let beforeInsert = tr.doc;
|
|
11521
|
-
if (
|
|
11509
|
+
if (isNode2)
|
|
11522
11510
|
tr.replaceRangeWith(pos, pos, slice2.content.firstChild);
|
|
11523
11511
|
else
|
|
11524
11512
|
tr.replaceRange(pos, pos, slice2);
|
|
11525
11513
|
if (tr.doc.eq(beforeInsert))
|
|
11526
11514
|
return;
|
|
11527
11515
|
let $pos = tr.doc.resolve(pos);
|
|
11528
|
-
if (
|
|
11516
|
+
if (isNode2 && NodeSelection.isSelectable(slice2.content.firstChild) && $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice2.content.firstChild)) {
|
|
11529
11517
|
tr.setSelection(new NodeSelection($pos));
|
|
11530
11518
|
} else {
|
|
11531
11519
|
let end = tr.mapping.map(insertPos);
|
|
@@ -16841,10 +16829,16 @@ function EditorContent({ apiKey }) {
|
|
|
16841
16829
|
null
|
|
16842
16830
|
);
|
|
16843
16831
|
const wrapperRef = useRef7(null);
|
|
16844
|
-
|
|
16845
|
-
"VITE_TETRONS_API_URL
|
|
16846
|
-
|
|
16847
|
-
|
|
16832
|
+
function getApiBaseUrl() {
|
|
16833
|
+
if (typeof import.meta !== "undefined" && import.meta.env?.VITE_TETRONS_API_URL) {
|
|
16834
|
+
return import.meta.env.VITE_TETRONS_API_URL;
|
|
16835
|
+
}
|
|
16836
|
+
if (typeof process !== "undefined" && process.env?.NEXT_PUBLIC_TETRONS_API_URL) {
|
|
16837
|
+
return process.env.NEXT_PUBLIC_TETRONS_API_URL;
|
|
16838
|
+
}
|
|
16839
|
+
return "https://staging.tetrons.com";
|
|
16840
|
+
}
|
|
16841
|
+
const API_BASE_URL = getApiBaseUrl();
|
|
16848
16842
|
useEffect8(() => {
|
|
16849
16843
|
const validateKey = async () => {
|
|
16850
16844
|
try {
|
|
@@ -16990,49 +16984,39 @@ function EditorContent({ apiKey }) {
|
|
|
16990
16984
|
));
|
|
16991
16985
|
}
|
|
16992
16986
|
|
|
16993
|
-
// src/index.nodeimpl.ts
|
|
16994
|
-
var USAGE_FILE = path.join(process.cwd(), ".tetrons-usage.json");
|
|
16995
|
-
async function getOrCreateInstallDate() {
|
|
16996
|
-
try {
|
|
16997
|
-
if (fs.existsSync(USAGE_FILE)) {
|
|
16998
|
-
const raw = fs.readFileSync(USAGE_FILE, "utf-8");
|
|
16999
|
-
try {
|
|
17000
|
-
const data = JSON.parse(raw);
|
|
17001
|
-
if (typeof data.installedAt === "string") {
|
|
17002
|
-
return new Date(data.installedAt);
|
|
17003
|
-
}
|
|
17004
|
-
} catch {
|
|
17005
|
-
console.warn(
|
|
17006
|
-
"[TETRONS] Malformed .tetrons-usage.json. Reinitializing..."
|
|
17007
|
-
);
|
|
17008
|
-
}
|
|
17009
|
-
}
|
|
17010
|
-
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
17011
|
-
fs.writeFileSync(USAGE_FILE, JSON.stringify({ installedAt: now }), {
|
|
17012
|
-
encoding: "utf-8",
|
|
17013
|
-
flag: "w"
|
|
17014
|
-
});
|
|
17015
|
-
return new Date(now);
|
|
17016
|
-
} catch (err) {
|
|
17017
|
-
console.error("[TETRONS] Failed to read/write install date:", err);
|
|
17018
|
-
throw new Error("Failed to access local usage record.");
|
|
17019
|
-
}
|
|
17020
|
-
}
|
|
17021
|
-
|
|
17022
16987
|
// src/index.ts
|
|
17023
16988
|
var API_VALID = false;
|
|
17024
16989
|
var API_VERSION = "";
|
|
16990
|
+
var isNode = typeof window === "undefined";
|
|
17025
16991
|
var validityMap = {
|
|
17026
16992
|
free: 14,
|
|
17027
16993
|
pro: 30,
|
|
17028
16994
|
premium: 30,
|
|
17029
16995
|
platinum: 30
|
|
17030
16996
|
};
|
|
17031
|
-
|
|
17032
|
-
|
|
17033
|
-
|
|
17034
|
-
|
|
17035
|
-
|
|
16997
|
+
function getInstallDateKey() {
|
|
16998
|
+
return "tetrons_installed_at";
|
|
16999
|
+
}
|
|
17000
|
+
async function getOrCreateInstallDate() {
|
|
17001
|
+
const key = getInstallDateKey();
|
|
17002
|
+
if (isNode) {
|
|
17003
|
+
const fs = await import("fs");
|
|
17004
|
+
const path = await import("path");
|
|
17005
|
+
const usagePath = path.join(process.cwd(), ".tetrons-usage.json");
|
|
17006
|
+
if (fs.existsSync(usagePath)) {
|
|
17007
|
+
const data = JSON.parse(fs.readFileSync(usagePath, "utf-8"));
|
|
17008
|
+
return new Date(data.installedAt);
|
|
17009
|
+
}
|
|
17010
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
17011
|
+
fs.writeFileSync(usagePath, JSON.stringify({ installedAt: now }));
|
|
17012
|
+
return new Date(now);
|
|
17013
|
+
} else {
|
|
17014
|
+
const saved = localStorage.getItem(key);
|
|
17015
|
+
if (saved) return new Date(saved);
|
|
17016
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
17017
|
+
localStorage.setItem(key, now);
|
|
17018
|
+
return new Date(now);
|
|
17019
|
+
}
|
|
17036
17020
|
}
|
|
17037
17021
|
function getRemainingDays(installedAt, validityDays) {
|
|
17038
17022
|
const now = /* @__PURE__ */ new Date();
|
|
@@ -17055,20 +17039,18 @@ async function initializeTetrons(apiKey) {
|
|
|
17055
17039
|
}
|
|
17056
17040
|
const data = await res.json();
|
|
17057
17041
|
API_VALID = data.valid;
|
|
17042
|
+
API_VERSION = data.version;
|
|
17058
17043
|
if (!API_VALID) {
|
|
17059
17044
|
throw new Error("API Key is not valid.");
|
|
17060
17045
|
}
|
|
17061
|
-
if (
|
|
17062
|
-
throw new Error(
|
|
17046
|
+
if (API_VERSION === "") {
|
|
17047
|
+
throw new Error("No license version provided.");
|
|
17063
17048
|
}
|
|
17064
|
-
API_VERSION = data.version;
|
|
17065
17049
|
const validityDays = validityMap[API_VERSION];
|
|
17066
|
-
const installedAt = await
|
|
17050
|
+
const installedAt = await getOrCreateInstallDate();
|
|
17067
17051
|
const remainingDays = getRemainingDays(installedAt, validityDays);
|
|
17068
17052
|
if (remainingDays <= 0) {
|
|
17069
|
-
throw new Error(
|
|
17070
|
-
`Your ${API_VERSION} license expired after ${validityDays} days.`
|
|
17071
|
-
);
|
|
17053
|
+
throw new Error(`Your ${API_VERSION} license has expired.`);
|
|
17072
17054
|
}
|
|
17073
17055
|
console.log(
|
|
17074
17056
|
`[TETRONS] Initialized: ${API_VERSION} | Remaining days: ${remainingDays}`
|
|
@@ -17083,12 +17065,13 @@ function isApiKeyValid() {
|
|
|
17083
17065
|
async function getTetronsRemainingDays() {
|
|
17084
17066
|
if (!API_VALID || API_VERSION === "") return null;
|
|
17085
17067
|
const validityDays = validityMap[API_VERSION];
|
|
17086
|
-
const installedAt = await
|
|
17068
|
+
const installedAt = await getOrCreateInstallDate();
|
|
17087
17069
|
return getRemainingDays(installedAt, validityDays);
|
|
17088
17070
|
}
|
|
17071
|
+
var index_default = EditorContent;
|
|
17089
17072
|
export {
|
|
17090
17073
|
EditorContent,
|
|
17091
|
-
|
|
17074
|
+
index_default as default,
|
|
17092
17075
|
getTetronsRemainingDays,
|
|
17093
17076
|
getTetronsVersion,
|
|
17094
17077
|
initializeTetrons,
|
package/package.json
CHANGED
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tetrons",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.73",
|
|
4
4
|
"description": "A Next.js project written in TypeScript",
|
|
5
|
-
"main": "
|
|
6
|
-
"module": "
|
|
7
|
-
"types": "
|
|
5
|
+
"main": "dist/index.cjs",
|
|
6
|
+
"module": "dist/index.mjs",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
8
|
"scripts": {
|
|
9
9
|
"dev": "next dev --turbo",
|
|
10
10
|
"build": "tsup && copyfiles -u 2 src/styles/*.css dist/styles && copyfiles -u 2 src/components/**/*.tsx dist/components",
|
|
11
11
|
"start": "next start",
|
|
12
12
|
"lint": "next lint"
|
|
13
13
|
},
|
|
14
|
-
"./browser": {
|
|
15
|
-
"import": "./dist/browser.browser.js",
|
|
16
|
-
"require": "./dist/browser.browser.js"
|
|
17
|
-
},
|
|
18
14
|
"dependencies": {
|
|
19
15
|
"@emoji-mart/react": "1.1.1",
|
|
20
16
|
"@tiptap/core": "2.24.1",
|
|
@@ -79,17 +75,8 @@
|
|
|
79
75
|
"license": "MIT",
|
|
80
76
|
"exports": {
|
|
81
77
|
".": {
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"require": "./dist/node.node.cjs"
|
|
85
|
-
},
|
|
86
|
-
"./node": {
|
|
87
|
-
"import": "./dist/node.node.mjs",
|
|
88
|
-
"require": "./dist/node.node.cjs"
|
|
89
|
-
},
|
|
90
|
-
"./browser": {
|
|
91
|
-
"import": "./dist/browser.browser.js",
|
|
92
|
-
"require": "./dist/browser.browser.js"
|
|
78
|
+
"import": "./dist/index.mjs",
|
|
79
|
+
"require": "./dist/index.cjs"
|
|
93
80
|
},
|
|
94
81
|
"./style.css": "./dist/styles/tetrons.css",
|
|
95
82
|
"./app/api/ai-action/route": {
|
|
@@ -117,6 +104,9 @@
|
|
|
117
104
|
"require": "./dist/app/api/validate/route.cjs"
|
|
118
105
|
}
|
|
119
106
|
},
|
|
107
|
+
"browser": {
|
|
108
|
+
"./dist/licenseUtils.server.js": false
|
|
109
|
+
},
|
|
120
110
|
"files": [
|
|
121
111
|
"dist",
|
|
122
112
|
"dist/styles/tetrons.css",
|