@blinkk/root-cms 3.0.1-alpha.0 → 3.0.1-beta.2

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.
@@ -473,32 +473,37 @@ react-is/cjs/react-is.production.min.js:
473
473
  @tabler/icons-preact/dist/esm/icons/IconAlarmOff.mjs:
474
474
  @tabler/icons-preact/dist/esm/icons/IconAlertTriangle.mjs:
475
475
  @tabler/icons-preact/dist/esm/icons/IconAlignJustified.mjs:
476
+ @tabler/icons-preact/dist/esm/icons/IconArchiveOff.mjs:
476
477
  @tabler/icons-preact/dist/esm/icons/IconArchive.mjs:
477
478
  @tabler/icons-preact/dist/esm/icons/IconArrowBackUp.mjs:
478
479
  @tabler/icons-preact/dist/esm/icons/IconArrowBack.mjs:
479
480
  @tabler/icons-preact/dist/esm/icons/IconArrowLeft.mjs:
480
- @tabler/icons-preact/dist/esm/icons/IconArrowRoundaboutRight.mjs:
481
+ @tabler/icons-preact/dist/esm/icons/IconArrowRight.mjs:
481
482
  @tabler/icons-preact/dist/esm/icons/IconArrowUpRight.mjs:
482
483
  @tabler/icons-preact/dist/esm/icons/IconArrowsHorizontal.mjs:
483
484
  @tabler/icons-preact/dist/esm/icons/IconArrowsVertical.mjs:
484
485
  @tabler/icons-preact/dist/esm/icons/IconBold.mjs:
485
- @tabler/icons-preact/dist/esm/icons/IconBox.mjs:
486
486
  @tabler/icons-preact/dist/esm/icons/IconBraces.mjs:
487
487
  @tabler/icons-preact/dist/esm/icons/IconBracketsAngle.mjs:
488
+ @tabler/icons-preact/dist/esm/icons/IconCalendar.mjs:
488
489
  @tabler/icons-preact/dist/esm/icons/IconCapsuleHorizontal.mjs:
489
490
  @tabler/icons-preact/dist/esm/icons/IconCarrot.mjs:
490
491
  @tabler/icons-preact/dist/esm/icons/IconCheck.mjs:
491
492
  @tabler/icons-preact/dist/esm/icons/IconChevronDown.mjs:
493
+ @tabler/icons-preact/dist/esm/icons/IconChevronRight.mjs:
492
494
  @tabler/icons-preact/dist/esm/icons/IconCircleArrowDown.mjs:
493
495
  @tabler/icons-preact/dist/esm/icons/IconCircleArrowUp.mjs:
494
496
  @tabler/icons-preact/dist/esm/icons/IconCirclePlus.mjs:
495
497
  @tabler/icons-preact/dist/esm/icons/IconClearFormatting.mjs:
496
- @tabler/icons-preact/dist/esm/icons/IconClipboardCheck.mjs:
497
498
  @tabler/icons-preact/dist/esm/icons/IconClipboardCopy.mjs:
499
+ @tabler/icons-preact/dist/esm/icons/IconClipboardList.mjs:
498
500
  @tabler/icons-preact/dist/esm/icons/IconClipboard.mjs:
501
+ @tabler/icons-preact/dist/esm/icons/IconClock.mjs:
499
502
  @tabler/icons-preact/dist/esm/icons/IconCloudOff.mjs:
500
503
  @tabler/icons-preact/dist/esm/icons/IconCode.mjs:
504
+ @tabler/icons-preact/dist/esm/icons/IconColumns3.mjs:
501
505
  @tabler/icons-preact/dist/esm/icons/IconCopy.mjs:
506
+ @tabler/icons-preact/dist/esm/icons/IconCornerDownRight.mjs:
502
507
  @tabler/icons-preact/dist/esm/icons/IconCrop.mjs:
503
508
  @tabler/icons-preact/dist/esm/icons/IconDatabase.mjs:
504
509
  @tabler/icons-preact/dist/esm/icons/IconDeviceDesktop.mjs:
@@ -512,7 +517,9 @@ react-is/cjs/react-is.production.min.js:
512
517
  @tabler/icons-preact/dist/esm/icons/IconFileDiff.mjs:
513
518
  @tabler/icons-preact/dist/esm/icons/IconFileDownload.mjs:
514
519
  @tabler/icons-preact/dist/esm/icons/IconFileUpload.mjs:
520
+ @tabler/icons-preact/dist/esm/icons/IconFile.mjs:
515
521
  @tabler/icons-preact/dist/esm/icons/IconFilter.mjs:
522
+ @tabler/icons-preact/dist/esm/icons/IconFlag.mjs:
516
523
  @tabler/icons-preact/dist/esm/icons/IconFolder.mjs:
517
524
  @tabler/icons-preact/dist/esm/icons/IconGitCompare.mjs:
518
525
  @tabler/icons-preact/dist/esm/icons/IconGripVertical.mjs:
@@ -528,6 +535,8 @@ react-is/cjs/react-is.production.min.js:
528
535
  @tabler/icons-preact/dist/esm/icons/IconJson.mjs:
529
536
  @tabler/icons-preact/dist/esm/icons/IconLanguageOff.mjs:
530
537
  @tabler/icons-preact/dist/esm/icons/IconLanguage.mjs:
538
+ @tabler/icons-preact/dist/esm/icons/IconLayoutGrid.mjs:
539
+ @tabler/icons-preact/dist/esm/icons/IconLayoutList.mjs:
531
540
  @tabler/icons-preact/dist/esm/icons/IconLayoutSidebarRightCollapse.mjs:
532
541
  @tabler/icons-preact/dist/esm/icons/IconLayoutSidebarRightExpand.mjs:
533
542
  @tabler/icons-preact/dist/esm/icons/IconLink.mjs:
@@ -539,6 +548,8 @@ react-is/cjs/react-is.production.min.js:
539
548
  @tabler/icons-preact/dist/esm/icons/IconLock.mjs:
540
549
  @tabler/icons-preact/dist/esm/icons/IconLogout.mjs:
541
550
  @tabler/icons-preact/dist/esm/icons/IconMapPin.mjs:
551
+ @tabler/icons-preact/dist/esm/icons/IconMessageCirclePlus.mjs:
552
+ @tabler/icons-preact/dist/esm/icons/IconMessageCircle.mjs:
542
553
  @tabler/icons-preact/dist/esm/icons/IconMessage.mjs:
543
554
  @tabler/icons-preact/dist/esm/icons/IconMoodLookDown.mjs:
544
555
  @tabler/icons-preact/dist/esm/icons/IconPackage.mjs:
@@ -576,6 +587,8 @@ react-is/cjs/react-is.production.min.js:
576
587
  @tabler/icons-preact/dist/esm/icons/IconTool.mjs:
577
588
  @tabler/icons-preact/dist/esm/icons/IconTrash.mjs:
578
589
  @tabler/icons-preact/dist/esm/icons/IconUnderline.mjs:
590
+ @tabler/icons-preact/dist/esm/icons/IconUserPlus.mjs:
591
+ @tabler/icons-preact/dist/esm/icons/IconUser.mjs:
579
592
  @tabler/icons-preact/dist/esm/icons/IconWorld.mjs:
580
593
  @tabler/icons-preact/dist/esm/icons/IconX.mjs:
581
594
  @tabler/icons-preact/dist/esm/icons/IconCircleCheckFilled.mjs:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blinkk/root-cms",
3
- "version": "3.0.1-alpha.0",
3
+ "version": "3.0.1-beta.2",
4
4
  "author": "s@blinkk.com",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -55,9 +55,13 @@
55
55
  "@ag-grid-community/core": "32.3.9",
56
56
  "@ag-grid-community/react": "32.3.9",
57
57
  "@ag-grid-community/styles": "32.3.9",
58
- "@genkit-ai/ai": "1.26.0",
59
- "@genkit-ai/core": "1.26.0",
60
- "@genkit-ai/google-genai": "1.26.0",
58
+ "@ai-sdk/anthropic": "3.0.74",
59
+ "@ai-sdk/google": "3.0.67",
60
+ "@ai-sdk/openai": "3.0.60",
61
+ "@ai-sdk/openai-compatible": "2.0.46",
62
+ "@ai-sdk/react": "3.0.177",
63
+ "ai": "6.0.175",
64
+ "zod": "4.4.3",
61
65
  "@google-cloud/firestore": "7.11.3",
62
66
  "@hello-pangea/dnd": "18.0.1",
63
67
  "@types/cli-progress": "3.11.6",
@@ -70,10 +74,11 @@
70
74
  "date-fns-tz": "3.2.0",
71
75
  "diff": "8.0.2",
72
76
  "dts-dom": "3.7.0",
77
+ "@mantine/spotlight": "4.2.12",
73
78
  "fnv-plus": "1.3.1",
74
- "genkit": "1.26.0",
75
79
  "jsonwebtoken": "9.0.2",
76
80
  "kleur": "4.1.5",
81
+ "minisearch": "7.2.0",
77
82
  "sirv": "2.0.3",
78
83
  "tiny-glob": "0.2.9"
79
84
  },
@@ -106,7 +111,6 @@
106
111
  "@mantine/hooks": "4.2.12",
107
112
  "@mantine/modals": "4.2.12",
108
113
  "@mantine/notifications": "4.2.12",
109
- "@mantine/spotlight": "4.2.12",
110
114
  "@preact/compat": "18.3.1",
111
115
  "@tabler/icons-preact": "3.35.0",
112
116
  "@testing-library/preact": "3.2.4",
@@ -148,10 +152,10 @@
148
152
  "vite": "8.0.3",
149
153
  "vitest": "4.1.2",
150
154
  "yjs": "13.6.27",
151
- "@blinkk/root": "3.0.1-alpha.0"
155
+ "@blinkk/root": "3.0.1-beta.2"
152
156
  },
153
157
  "peerDependencies": {
154
- "@blinkk/root": "3.0.1-alpha.0",
158
+ "@blinkk/root": "3.0.1-beta.2",
155
159
  "firebase-admin": ">=11",
156
160
  "firebase-functions": ">=4"
157
161
  },
@@ -1,19 +0,0 @@
1
- import {
2
- Chat,
3
- ChatClient,
4
- extractJsonFromResponse,
5
- generateImage,
6
- generatePublishMessage,
7
- summarizeDiff,
8
- translateString
9
- } from "./chunk-T5UK2H24.js";
10
- import "./chunk-MLKGABMK.js";
11
- export {
12
- Chat,
13
- ChatClient,
14
- extractJsonFromResponse,
15
- generateImage,
16
- generatePublishMessage,
17
- summarizeDiff,
18
- translateString
19
- };
@@ -1,7 +0,0 @@
1
- import "./chunk-MLKGABMK.js";
2
-
3
- // shared/ai/prompts/altText.txt
4
- var altText_default = "Create a descriptive and concise alt text for the attached image.\n\n- The alt text should be a brief but comprehensive description of the image, including key subjects, the setting, and any relevant details or actions.\n- The alt text should not exceed 125 characters.\n- Only provide one generation, and include only that data in the response. No surrounding text, clarifications, etc. Just the alt text.\n";
5
- export {
6
- altText_default as default
7
- };
@@ -1,157 +0,0 @@
1
- import {
2
- RootCMSClient,
3
- getCmsPlugin
4
- } from "./chunk-YMUZ5H5C.js";
5
-
6
- // core/versions.ts
7
- import fs from "fs";
8
- import path from "path";
9
- import { Timestamp } from "firebase-admin/firestore";
10
- import glob from "tiny-glob";
11
- var DOCUMENT_SAVE_OFFSET = 5 * 60 * 1e3;
12
- var VersionsService = class {
13
- constructor(rootConfig) {
14
- this.rootConfig = rootConfig;
15
- const cmsPlugin = getCmsPlugin(rootConfig);
16
- const cmsPluginOptions = cmsPlugin.getConfig();
17
- const projectId = cmsPluginOptions.id || "default";
18
- this.projectId = projectId;
19
- this.db = cmsPlugin.getFirestore();
20
- }
21
- /**
22
- * Saves a version of all documents that have been edited since the last run.
23
- */
24
- async saveVersions() {
25
- const lastRun = await this.getLastRun();
26
- const lastRunWithOffset = lastRun === 0 ? lastRun : lastRun - DOCUMENT_SAVE_OFFSET;
27
- const changedDocs = await this.getDocsModifiedAfter(lastRunWithOffset);
28
- const now = Timestamp.now().toMillis();
29
- const versions = changedDocs.filter((doc) => {
30
- const modifiedAt = doc.sys.modifiedAt.toMillis();
31
- if (modifiedAt > now - DOCUMENT_SAVE_OFFSET) {
32
- return false;
33
- }
34
- const publishedAt = doc.sys.publishedAt?.toMillis?.();
35
- if (publishedAt && Math.abs(publishedAt - modifiedAt) < 5e3) {
36
- return false;
37
- }
38
- return true;
39
- });
40
- if (versions.length > 0) {
41
- this.saveVersionsToFirestore(versions);
42
- }
43
- this.saveLastRun(now);
44
- }
45
- async saveVersionsToFirestore(versions) {
46
- const batch = this.db.batch();
47
- versions.forEach((version) => {
48
- if (!version.collection || !version.slug || !version.sys?.modifiedAt) {
49
- return;
50
- }
51
- const modifiedAtMillis = version.sys.modifiedAt.toMillis();
52
- const versionPath = `Projects/${this.projectId}/Collections/${version.collection}/Drafts/${version.slug}/Versions/${modifiedAtMillis}`;
53
- console.log(versionPath);
54
- const versionRef = this.db.doc(versionPath);
55
- batch.set(versionRef, version);
56
- });
57
- await batch.commit();
58
- console.log(`versions: saved ${versions.length} versions`);
59
- }
60
- /**
61
- * Returns the last time (in millis) saveVersions() was run, or 0 if has
62
- * never been run.
63
- */
64
- async getLastRun() {
65
- const projectDocRef = this.db.collection("Projects").doc(this.projectId);
66
- const projectDoc = await projectDocRef.get();
67
- if (projectDoc.exists) {
68
- const data = projectDoc.data() || {};
69
- const ts = data.versionsLastRun;
70
- if (ts) {
71
- return ts.toMillis();
72
- }
73
- }
74
- return 0;
75
- }
76
- /**
77
- * Saves {versionLastRun: <timestamp>} to the Projects/<projectId> doc.
78
- */
79
- async saveLastRun(millis) {
80
- const ts = Timestamp.fromMillis(millis);
81
- const projectDocRef = this.db.collection("Projects").doc(this.projectId);
82
- await projectDocRef.set({ versionsLastRun: ts }, { merge: true });
83
- }
84
- /**
85
- * Returns a list of all docs that were edited after a certain time.
86
- */
87
- async getDocsModifiedAfter(millis) {
88
- const ts = Timestamp.fromMillis(millis);
89
- const results = [];
90
- const collectionIds = await this.listCollections();
91
- for (const collectionId of collectionIds) {
92
- const collectionPath = `Projects/${this.projectId}/Collections/${collectionId}/Drafts`;
93
- const query = this.db.collection(collectionPath).where("sys.modifiedAt", ">=", ts);
94
- const querySnapshot = await query.get();
95
- querySnapshot.forEach((doc) => {
96
- results.push(doc.data());
97
- });
98
- }
99
- return results;
100
- }
101
- /**
102
- * Returns a list of collection ids for the Root project.
103
- */
104
- async listCollections() {
105
- const collectionsDir = path.join(this.rootConfig.rootDir, "collections");
106
- if (!fs.existsSync(collectionsDir)) {
107
- return [];
108
- }
109
- const collectionIds = [];
110
- const collectionFileNames = await glob("*.schema.ts", {
111
- cwd: collectionsDir
112
- });
113
- collectionFileNames.forEach((filename) => {
114
- collectionIds.push(filename.slice(0, -10));
115
- });
116
- return collectionIds;
117
- }
118
- };
119
-
120
- // core/cron.ts
121
- async function runCronJobs(rootConfig) {
122
- await Promise.all([
123
- runCronJob("publishScheduledDocs", runPublishScheduledDocs, rootConfig),
124
- runCronJob(
125
- "syncScheduledDataSources",
126
- runSyncScheduledDataSources,
127
- rootConfig
128
- ),
129
- runCronJob("saveVersions", runSaveVersions, rootConfig)
130
- ]);
131
- }
132
- async function runCronJob(name, fn, ...args) {
133
- try {
134
- await fn(...args);
135
- } catch (err) {
136
- console.log(`cron failed: ${name}`);
137
- console.error(String(err.stack || err));
138
- throw err;
139
- }
140
- }
141
- async function runPublishScheduledDocs(rootConfig) {
142
- const cmsClient = new RootCMSClient(rootConfig);
143
- await cmsClient.publishScheduledDocs();
144
- await cmsClient.publishScheduledReleases();
145
- }
146
- async function runSyncScheduledDataSources(rootConfig) {
147
- const cmsClient = new RootCMSClient(rootConfig);
148
- await cmsClient.syncScheduledDataSources();
149
- }
150
- async function runSaveVersions(rootConfig) {
151
- const service = new VersionsService(rootConfig);
152
- await service.saveVersions();
153
- }
154
-
155
- export {
156
- runCronJobs
157
- };
@@ -1,191 +0,0 @@
1
- // package.json
2
- var package_default = {
3
- name: "@blinkk/root-cms",
4
- version: "3.0.1-alpha.0",
5
- author: "s@blinkk.com",
6
- license: "MIT",
7
- engines: {
8
- node: ">=16.0.0"
9
- },
10
- repository: {
11
- type: "git",
12
- url: "git+https://github.com/blinkk/rootjs.git",
13
- directory: "packages/root-cms"
14
- },
15
- files: [
16
- "dist/**/*"
17
- ],
18
- bin: {
19
- "root-cms": "./bin/root-cms.js"
20
- },
21
- type: "module",
22
- module: "./dist/index.js",
23
- types: "./dist/index.d.ts",
24
- exports: {
25
- ".": {
26
- types: "./dist/core.d.ts",
27
- import: "./dist/core.js"
28
- },
29
- "./client": {
30
- types: "./dist/client.d.ts",
31
- import: "./dist/client.js"
32
- },
33
- "./core": {
34
- types: "./dist/core.d.ts",
35
- import: "./dist/core.js"
36
- },
37
- "./functions": {
38
- types: "./dist/functions.d.ts",
39
- import: "./dist/functions.js"
40
- },
41
- "./plugin": {
42
- types: "./dist/plugin.d.ts",
43
- import: "./dist/plugin.js"
44
- },
45
- "./project": {
46
- types: "./dist/project.d.ts",
47
- import: "./dist/project.js"
48
- },
49
- "./richtext": {
50
- types: "./dist/richtext.d.ts",
51
- import: "./dist/richtext.js"
52
- }
53
- },
54
- scripts: {
55
- build: 'rm -rf dist && concurrently -n "core,signin,ui" npm:build:core npm:build:signin npm:build:ui',
56
- "build:core": "tsup-node --config=./core/tsup.config.ts",
57
- "//": "NOTE: esbuild is used here because tsup doesn't currently support aliases.",
58
- "build:ui": "esbuild ui/ui.tsx --bundle --minify --alias:react=@preact/compat --alias:react-dom=@preact/compat --tsconfig=ui/tsconfig.json --outdir=dist/ui --legal-comments=external",
59
- "build:signin": "esbuild signin/signin.tsx --bundle --minify --tsconfig=signin/tsconfig.json --outdir=dist/ui --legal-comments=external",
60
- dev: 'rm -rf dist && concurrently -k -n "core,ui" npm:dev:core npm:dev:signin npm:dev:ui',
61
- "dev:core": "pnpm build:core --watch",
62
- "dev:signin": "pnpm build:signin --watch",
63
- "dev:ui": "pnpm build:ui --watch",
64
- test: "pnpm build && firebase emulators:exec 'vitest run --exclude=**/*.visual.test.tsx'",
65
- "test:visual": "vitest run --config=vitest.config.visual.ts",
66
- "test:watch": "pnpm build && firebase emulators:exec 'vitest'"
67
- },
68
- dependencies: {
69
- "@ag-grid-community/client-side-row-model": "32.3.9",
70
- "@ag-grid-community/core": "32.3.9",
71
- "@ag-grid-community/react": "32.3.9",
72
- "@ag-grid-community/styles": "32.3.9",
73
- "@genkit-ai/ai": "1.26.0",
74
- "@genkit-ai/core": "1.26.0",
75
- "@genkit-ai/google-genai": "1.26.0",
76
- "@google-cloud/firestore": "7.11.3",
77
- "@hello-pangea/dnd": "18.0.1",
78
- "@types/cli-progress": "3.11.6",
79
- "body-parser": "1.20.2",
80
- "cli-progress": "3.12.0",
81
- commander: "11.0.0",
82
- "csv-parse": "5.5.2",
83
- "csv-stringify": "6.4.4",
84
- "date-fns": "4.1.0",
85
- "date-fns-tz": "3.2.0",
86
- diff: "8.0.2",
87
- "dts-dom": "3.7.0",
88
- "fnv-plus": "1.3.1",
89
- genkit: "1.26.0",
90
- jsonwebtoken: "9.0.2",
91
- kleur: "4.1.5",
92
- sirv: "2.0.3",
93
- "tiny-glob": "0.2.9"
94
- },
95
- "//": "NOTE(stevenle): due to compat issues with mantine and preact, mantine is pinned to v4.2.12",
96
- devDependencies: {
97
- "@babel/core": "7.17.9",
98
- "@blinkk/root": "workspace:*",
99
- "@editorjs/editorjs": "2.30.8",
100
- "@editorjs/header": "2.8.8",
101
- "@editorjs/image": "2.10.2",
102
- "@editorjs/list": "2.0.6",
103
- "@editorjs/nested-list": "1.4.3",
104
- "@editorjs/raw": "2.5.1",
105
- "@editorjs/table": "2.4.4",
106
- "@editorjs/underline": "1.2.1",
107
- "@emotion/react": "11.10.5",
108
- "@firebase/app-compat": "0.5.2",
109
- "@firebase/app-types": "0.9.3",
110
- "@firebase/rules-unit-testing": "5.0.0",
111
- "@lexical/code": "0.33.1",
112
- "@lexical/html": "0.33.1",
113
- "@lexical/link": "0.33.1",
114
- "@lexical/list": "0.33.1",
115
- "@lexical/markdown": "0.33.1",
116
- "@lexical/react": "0.33.1",
117
- "@lexical/rich-text": "0.33.1",
118
- "@lexical/selection": "0.33.1",
119
- "@lexical/table": "0.33.1",
120
- "@lexical/utils": "0.33.1",
121
- "@mantine/core": "4.2.12",
122
- "@mantine/hooks": "4.2.12",
123
- "@mantine/modals": "4.2.12",
124
- "@mantine/notifications": "4.2.12",
125
- "@mantine/spotlight": "4.2.12",
126
- "@preact/compat": "18.3.1",
127
- "@tabler/icons-preact": "3.35.0",
128
- "@testing-library/preact": "3.2.4",
129
- "@testing-library/user-event": "14.6.1",
130
- "@types/body-parser": "1.19.3",
131
- "@types/fnv-plus": "1.3.2",
132
- "@types/gapi": "0.0.47",
133
- "@types/gapi.client.drive-v3": "0.0.4",
134
- "@types/gapi.client.sheets-v4": "0.0.4",
135
- "@types/google.accounts": "0.0.14",
136
- "@types/jsonwebtoken": "9.0.1",
137
- "@types/node": "24.3.1",
138
- "@vitest/browser": "4.1.2",
139
- "@vitest/browser-playwright": "4.1.2",
140
- concurrently: "7.6.0",
141
- esbuild: "0.25.9",
142
- firebase: "12.2.1",
143
- "firebase-admin": "13.5.0",
144
- "firebase-functions": "6.4.0",
145
- "firebase-tools": "14.15.2",
146
- "highlight.js": "11.6.0",
147
- jsdom: "27.2.0",
148
- "json-diff-kit": "1.0.29",
149
- lexical: "0.33.1",
150
- marked: "9.1.1",
151
- "mdast-util-from-markdown": "2.0.1",
152
- "mdast-util-gfm": "3.0.0",
153
- "micromark-extension-gfm": "3.0.0",
154
- playwright: "1.56.1",
155
- preact: "10.27.1",
156
- "preact-iso": "2.11.1",
157
- "preact-render-to-string": "6.6.7",
158
- react: "npm:@preact/compat@18.3.1",
159
- "react-dom": "npm:@preact/compat@18.3.1",
160
- "react-easy-crop": "5.5.6",
161
- "react-json-view-compare": "2.0.2",
162
- tsup: "8.5.0",
163
- typescript: "5.9.2",
164
- vite: "8.0.3",
165
- vitest: "4.1.2",
166
- yjs: "13.6.27"
167
- },
168
- peerDependencies: {
169
- "@blinkk/root": "3.0.1-alpha.0",
170
- "firebase-admin": ">=11",
171
- "firebase-functions": ">=4"
172
- },
173
- peerDependenciesMeta: {
174
- "firebase-functions": {
175
- optional: true
176
- }
177
- }
178
- };
179
-
180
- // core/server-version.ts
181
- var SERVER_STARTUP_TS = String(Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3));
182
- function getServerVersion() {
183
- if (process.env.NODE_ENV === "development") {
184
- return SERVER_STARTUP_TS;
185
- }
186
- return package_default?.version || "root-3.0.0";
187
- }
188
-
189
- export {
190
- getServerVersion
191
- };