@tantawowa/hosanna-tools 3.6.2 → 3.7.0

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.
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.LOCAL_SDK_STAMP_FILE = void 0;
7
+ exports.resolveLocalSdkSource = resolveLocalSdkSource;
8
+ exports.validateLocalSdkSource = validateLocalSdkSource;
9
+ exports.installEmbeddedSdk = installEmbeddedSdk;
10
+ exports.installSharedSdk = installSharedSdk;
11
+ exports.verifyEmbeddedSdkUnmodified = verifyEmbeddedSdkUnmodified;
12
+ exports.assertSourceRootCanBeReplaced = assertSourceRootCanBeReplaced;
13
+ exports.prepareLocalSdkIntegration = prepareLocalSdkIntegration;
14
+ const crypto_1 = __importDefault(require("crypto"));
15
+ const fs_1 = __importDefault(require("fs"));
16
+ const path_1 = __importDefault(require("path"));
17
+ const child_process_1 = __importDefault(require("child_process"));
18
+ const sdk_manager_js_1 = require("./sdk-manager.js");
19
+ exports.LOCAL_SDK_STAMP_FILE = '.hosanna-local.json';
20
+ const DIST_STAMP_FILE = '.hosanna-dist.json';
21
+ const EXCLUDED_SEGMENTS = new Set(['.git', 'node_modules', 'dist', 'src-generated', 'secrets', '.build-config']);
22
+ function sha256(filePath) {
23
+ return crypto_1.default.createHash('sha256').update(fs_1.default.readFileSync(filePath)).digest('hex');
24
+ }
25
+ function isExcluded(relativePath) {
26
+ const normalized = relativePath.split(path_1.default.sep).join('/');
27
+ const segments = normalized.split('/');
28
+ return segments.some(segment => EXCLUDED_SEGMENTS.has(segment)) ||
29
+ normalized === 'distribution/keygen-config.json' ||
30
+ normalized === exports.LOCAL_SDK_STAMP_FILE ||
31
+ normalized === DIST_STAMP_FILE;
32
+ }
33
+ function collectRegularFiles(root) {
34
+ const files = [];
35
+ const visit = (directory) => {
36
+ for (const entry of fs_1.default.readdirSync(directory, { withFileTypes: true })) {
37
+ const absolute = path_1.default.join(directory, entry.name);
38
+ const relative = path_1.default.relative(root, absolute);
39
+ if (isExcluded(relative))
40
+ continue;
41
+ if (entry.isSymbolicLink()) {
42
+ throw new Error(`Local Hosanna SDK contains a symbolic link and cannot be embedded safely: ${relative}`);
43
+ }
44
+ if (entry.isDirectory())
45
+ visit(absolute);
46
+ else if (entry.isFile())
47
+ files.push(relative);
48
+ }
49
+ };
50
+ visit(root);
51
+ return files.sort();
52
+ }
53
+ function resolveLocalSdkSource(projectRoot, configuredPath) {
54
+ if (!configuredPath.trim())
55
+ throw new Error('A non-empty --source-path is required.');
56
+ const candidate = path_1.default.resolve(projectRoot, configuredPath);
57
+ try {
58
+ return fs_1.default.realpathSync(candidate);
59
+ }
60
+ catch (_a) {
61
+ throw new Error(`Local Hosanna SDK source does not exist or is a broken link: ${candidate}`);
62
+ }
63
+ }
64
+ function validateLocalSdkSource(sourceRoot) {
65
+ var _a;
66
+ const packagePath = path_1.default.join(sourceRoot, 'package.json');
67
+ const distributionManifest = path_1.default.join(sourceRoot, 'distribution', 'manifest.json');
68
+ const requiredDirectories = [
69
+ path_1.default.join(sourceRoot, 'src', 'hosanna-ui'),
70
+ path_1.default.join(sourceRoot, 'src', 'hosanna-bridge-core'),
71
+ ];
72
+ let packageJson;
73
+ try {
74
+ packageJson = JSON.parse(fs_1.default.readFileSync(packagePath, 'utf8'));
75
+ }
76
+ catch (error) {
77
+ throw new Error(`Invalid local Hosanna SDK package manifest at ${packagePath}: ${error instanceof Error ? error.message : String(error)}`);
78
+ }
79
+ if (typeof packageJson.version !== 'string' || !packageJson.version.trim()) {
80
+ throw new Error(`Invalid local Hosanna SDK package manifest at ${packagePath}: missing version.`);
81
+ }
82
+ if (!fs_1.default.existsSync(distributionManifest)) {
83
+ throw new Error(`Local Hosanna SDK is missing distribution/manifest.json: ${sourceRoot}`);
84
+ }
85
+ for (const required of requiredDirectories) {
86
+ if (!((_a = fs_1.default.statSync(required, { throwIfNoEntry: false })) === null || _a === void 0 ? void 0 : _a.isDirectory())) {
87
+ throw new Error(`Local Hosanna SDK is missing required source directory: ${required}`);
88
+ }
89
+ }
90
+ }
91
+ function installEmbeddedSdk(projectRoot, configuredSourcePath) {
92
+ const sourceRoot = resolveLocalSdkSource(projectRoot, configuredSourcePath);
93
+ validateLocalSdkSource(sourceRoot);
94
+ const destination = path_1.default.join(projectRoot, 'hosanna-ui');
95
+ if (fs_1.default.lstatSync(destination, { throwIfNoEntry: false })) {
96
+ throw new Error(`${destination} already exists; embedded installation requires an empty destination.`);
97
+ }
98
+ const stagingRoot = fs_1.default.mkdtempSync(path_1.default.join(projectRoot, '.hosanna-ui-embedded-staging-'));
99
+ const staged = path_1.default.join(stagingRoot, 'hosanna-ui');
100
+ try {
101
+ fs_1.default.mkdirSync(staged, { recursive: true });
102
+ const sourceFiles = collectRegularFiles(sourceRoot);
103
+ for (const relative of sourceFiles) {
104
+ const target = path_1.default.join(staged, relative);
105
+ fs_1.default.mkdirSync(path_1.default.dirname(target), { recursive: true });
106
+ fs_1.default.copyFileSync(path_1.default.join(sourceRoot, relative), target);
107
+ }
108
+ const files = sourceFiles.map(relative => ({ path: relative.split(path_1.default.sep).join('/'), sha256: sha256(path_1.default.join(staged, relative)) }));
109
+ const stamp = {
110
+ schemaVersion: 1,
111
+ mode: 'embedded',
112
+ source: sourceRoot,
113
+ createdAt: new Date().toISOString(),
114
+ files,
115
+ };
116
+ fs_1.default.writeFileSync(path_1.default.join(staged, exports.LOCAL_SDK_STAMP_FILE), `${JSON.stringify(stamp, null, 2)}\n`, 'utf8');
117
+ fs_1.default.renameSync(staged, destination);
118
+ return destination;
119
+ }
120
+ finally {
121
+ fs_1.default.rmSync(stagingRoot, { recursive: true, force: true });
122
+ }
123
+ }
124
+ function installSharedSdk(projectRoot, configuredSourcePath) {
125
+ const sourceRoot = resolveLocalSdkSource(projectRoot, configuredSourcePath);
126
+ validateLocalSdkSource(sourceRoot);
127
+ const canonicalProjectRoot = fs_1.default.realpathSync(projectRoot);
128
+ const destination = path_1.default.join(canonicalProjectRoot, 'hosanna-ui');
129
+ if (fs_1.default.lstatSync(destination, { throwIfNoEntry: false })) {
130
+ throw new Error(`${destination} already exists; shared installation requires an empty destination.`);
131
+ }
132
+ const relativeTarget = path_1.default.relative(canonicalProjectRoot, sourceRoot) || '.';
133
+ fs_1.default.symlinkSync(relativeTarget, destination, 'dir');
134
+ return sourceRoot;
135
+ }
136
+ function verifyEmbeddedSdkUnmodified(repoDir) {
137
+ const stampPath = path_1.default.join(repoDir, exports.LOCAL_SDK_STAMP_FILE);
138
+ let stamp;
139
+ try {
140
+ stamp = JSON.parse(fs_1.default.readFileSync(stampPath, 'utf8'));
141
+ }
142
+ catch (_a) {
143
+ throw new Error(`Embedded Hosanna SDK has no valid ${exports.LOCAL_SDK_STAMP_FILE}; refusing to replace it.`);
144
+ }
145
+ if (stamp.schemaVersion !== 1 || stamp.mode !== 'embedded' || !Array.isArray(stamp.files)) {
146
+ throw new Error(`Embedded Hosanna SDK has an invalid ${exports.LOCAL_SDK_STAMP_FILE}; refusing to replace it.`);
147
+ }
148
+ const expected = new Map(stamp.files.map(file => [file.path, file.sha256]));
149
+ const actualFiles = collectRegularFiles(repoDir).map(file => file.split(path_1.default.sep).join('/'));
150
+ if (actualFiles.length !== expected.size || actualFiles.some(file => !expected.has(file))) {
151
+ throw new Error('Embedded Hosanna SDK contains local modifications; refusing to replace it.');
152
+ }
153
+ for (const relative of actualFiles) {
154
+ if (sha256(path_1.default.join(repoDir, relative)) !== expected.get(relative)) {
155
+ throw new Error(`Embedded Hosanna SDK contains local modifications (${relative}); refusing to replace it.`);
156
+ }
157
+ }
158
+ }
159
+ function assertSourceRootCanBeReplaced(repoDir, force = false) {
160
+ const stat = fs_1.default.lstatSync(repoDir, { throwIfNoEntry: false });
161
+ if (!stat || stat.isSymbolicLink())
162
+ return;
163
+ if (fs_1.default.existsSync(path_1.default.join(repoDir, exports.LOCAL_SDK_STAMP_FILE))) {
164
+ verifyEmbeddedSdkUnmodified(repoDir);
165
+ return;
166
+ }
167
+ if (fs_1.default.existsSync(path_1.default.join(repoDir, '.git'))) {
168
+ const status = child_process_1.default.spawnSync('git', ['-C', repoDir, 'status', '--porcelain'], { encoding: 'utf8' });
169
+ if (status.error || status.status !== 0)
170
+ throw new Error(`Unable to inspect ${repoDir}; refusing to replace it.`);
171
+ if (status.stdout.trim() && !force)
172
+ throw new Error(`${repoDir} has uncommitted changes; refusing to replace it.`);
173
+ return;
174
+ }
175
+ if (fs_1.default.existsSync(path_1.default.join(repoDir, DIST_STAMP_FILE)))
176
+ return;
177
+ throw new Error(`${repoDir} is not a recognized managed, embedded, shared, or Git SDK root; refusing to replace it.`);
178
+ }
179
+ function prepareLocalSdkIntegration(projectRoot) {
180
+ const repoDir = path_1.default.join(projectRoot, 'hosanna-ui');
181
+ const stat = fs_1.default.lstatSync(repoDir, { throwIfNoEntry: false });
182
+ if (!stat)
183
+ throw new Error(`Local Hosanna SDK root is missing: ${repoDir}`);
184
+ if (stat.isSymbolicLink()) {
185
+ try {
186
+ validateLocalSdkSource(fs_1.default.realpathSync(repoDir));
187
+ }
188
+ catch (error) {
189
+ throw new Error(`Shared Hosanna SDK link is broken or invalid: ${error instanceof Error ? error.message : String(error)}`);
190
+ }
191
+ }
192
+ else {
193
+ validateLocalSdkSource(repoDir);
194
+ }
195
+ (0, sdk_manager_js_1.ensureHosannaSymlinks)(repoDir, projectRoot);
196
+ (0, sdk_manager_js_1.prepareGitIgnore)(projectRoot);
197
+ }
198
+ //# sourceMappingURL=local-sdk-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-sdk-manager.js","sourceRoot":"","sources":["../../src/updater/local-sdk-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tantawowa/hosanna-tools",
3
- "version": "3.6.2",
3
+ "version": "3.7.0",
4
4
  "type": "commonjs",
5
5
  "engines": {
6
6
  "node": ">=24.17.0 <25"