@tantawowa/hosanna-tools 0.1.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 @@
1
+ {"version":3,"file":"view-generator.js","sourceRoot":"","sources":["../../src/generation/view-generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,mDAAqC;AAErC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;IAClC,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,MAAM,EAAE,OAAO,CAAC,MAAM;CACvB,CAAC,CAAC;AAEH,SAAS,MAAM,CAAC,QAAgB;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAClE,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,UAAkB;IACnD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,oEAAoE,CAAC,CAAC;IAExG,MAAM,aAAa,GAAG,GAAG,QAAQ,MAAM,CAAC;IACxC,MAAM,kBAAkB,GAAG,GAAG,QAAQ,OAAO,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;IAE9E,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAChH,MAAM,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAC3H,MAAM,OAAO,GAAG;4CAC0B,iBAAiB;4BACjC,sBAAsB;yCACT,sBAAsB;;;mBAG5C,kBAAkB;;;SAG5B,QAAQ;eACF,aAAa,qBAAqB,kBAAkB;;;;;;GAMhE,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QAC7B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;KAC9C;IAED,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,QAAQ,QAAQ,eAAe,YAAY,EAAE,CAAC,CAAC;IAE3D,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,oCAAoC;AAClD,CAAC;AArCD,oCAqCC"}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/hosanna-tools/cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export declare function findAllTSFiles(dir: string): string[];
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.findAllTSFiles = void 0;
27
+ const fs = __importStar(require("fs"));
28
+ const path = __importStar(require("path"));
29
+ // Recursively find all .ts files in the directory
30
+ function findAllTSFiles(dir) {
31
+ const results = [];
32
+ let files;
33
+ try {
34
+ files = fs.readdirSync(dir);
35
+ }
36
+ catch (err) {
37
+ console.error(`Error reading directory: ${dir}`, err);
38
+ return results;
39
+ }
40
+ files.forEach(file => {
41
+ const filePath = path.join(dir, file);
42
+ // console.log(`looking at ${filePath}`);
43
+ let stat;
44
+ try {
45
+ stat = fs.lstatSync(filePath);
46
+ }
47
+ catch (err) {
48
+ console.error(`Error reading file stats: ${filePath}`, err);
49
+ return;
50
+ }
51
+ if (stat.isSymbolicLink()) {
52
+ // Handle symbolic link
53
+ try {
54
+ const linkString = fs.readlinkSync(filePath);
55
+ const realPath = path.resolve(path.dirname(filePath), linkString);
56
+ let realStat;
57
+ try {
58
+ realStat = fs.statSync(realPath);
59
+ }
60
+ catch (err) {
61
+ console.error(`Error reading symlink path ${filePath} which points to path: ${realPath}`, err);
62
+ console.info('continuing...');
63
+ return;
64
+ }
65
+ if (realStat.isDirectory()) {
66
+ results.push(...findAllTSFiles(realPath));
67
+ }
68
+ else if (realPath.endsWith('.ts') && !realPath.endsWith('.d.ts')) {
69
+ results.push(realPath);
70
+ }
71
+ }
72
+ catch (err) {
73
+ console.error(`Error reading symlink: ${filePath}`, err);
74
+ }
75
+ ;
76
+ }
77
+ else if (stat.isDirectory()) {
78
+ results.push(...findAllTSFiles(filePath));
79
+ }
80
+ else if (filePath.endsWith('.ts') && !filePath.endsWith('.d.ts')) {
81
+ results.push(filePath);
82
+ }
83
+ });
84
+ return results;
85
+ }
86
+ exports.findAllTSFiles = findAllTSFiles;
87
+ //# sourceMappingURL=hosanna-tools-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosanna-tools-utils.js","sourceRoot":"","sources":["../../src/lib/hosanna-tools-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAG7B,kDAAkD;AAClD,SAAgB,cAAc,CAAC,GAAW;IACxC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,KAAe,CAAC;IAEpB,IAAI;QACF,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;KAC7B;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QACtD,OAAO,OAAO,CAAC;KAChB;IAED,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtC,yCAAyC;QAEzC,IAAI,IAAc,CAAC;QAEnB,IAAI;YACF,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;SAC/B;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,6BAA6B,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;YAC5D,OAAO;SACR;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YACzB,uBAAuB;YACvB,IAAI;gBACF,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;gBAClE,IAAI,QAAkB,CAAC;gBAEvB,IAAI;oBACF,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;iBAClC;gBAAC,OAAO,GAAG,EAAE;oBACZ,OAAO,CAAC,KAAK,CAAC,8BAA8B,QAAQ,0BAA0B,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;oBAC/F,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBAC9B,OAAO;iBACR;gBAED,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE;oBAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;iBAC3C;qBAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;oBAClE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACxB;aACF;YAAC,OAAO,GAAG,EAAE;gBACZ,OAAO,CAAC,KAAK,CAAC,0BAA0B,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;aAC1D;YAAA,CAAC;SACH;aAAM,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;YAC7B,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC3C;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAClE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACxB;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAvDD,wCAuDC"}
@@ -0,0 +1,3 @@
1
+ export declare function updateSdk(): void;
2
+ export declare function prepareGitIgnore(): void;
3
+ export declare function installSdk(): Promise<void>;
@@ -0,0 +1,196 @@
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.installSdk = exports.prepareGitIgnore = exports.updateSdk = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const child_process_1 = require("child_process");
9
+ const path_1 = __importDefault(require("path"));
10
+ const console_1 = require("console");
11
+ const node_process_1 = __importDefault(require("node:process"));
12
+ const readline_sync_1 = __importDefault(require("readline-sync"));
13
+ const console = new console_1.Console(node_process_1.default.stdout, node_process_1.default.stderr);
14
+ function loadHosannaConfig() {
15
+ const configPath = 'hosanna.json';
16
+ if (!fs_1.default.existsSync(configPath)) {
17
+ throw new Error(`Configuration file not found: ${configPath}`);
18
+ }
19
+ return JSON.parse(fs_1.default.readFileSync(configPath, 'utf8'));
20
+ }
21
+ const hosannaFoldersToSymlink = [
22
+ '/src/hosanna-bridge-lib',
23
+ '/src/hosanna-bridge-http',
24
+ '/src/hosanna-bridge-targets',
25
+ '/src/hosanna-list',
26
+ '/src/hosanna-ui',
27
+ ];
28
+ function runCommand(command, args, options = {}) {
29
+ const result = (0, child_process_1.spawnSync)(command, args, Object.assign({ stdio: 'inherit' }, options));
30
+ if (result.error) {
31
+ throw result.error;
32
+ }
33
+ if (result.status !== 0) {
34
+ throw new Error(`Command "${command} ${args.join(' ')}" failed with exit code ${result.status}`);
35
+ }
36
+ }
37
+ function updateSdk() {
38
+ console.log('process.cwd() - ', node_process_1.default.cwd());
39
+ const hosannaConfig = loadHosannaConfig();
40
+ // eslint-disable-next-line prefer-const
41
+ let { 'sdk-version': sdkVersion, 'git-url': repoUrl, branch } = hosannaConfig;
42
+ const repoDir = path_1.default.join(node_process_1.default.cwd(), 'hosanna-ui');
43
+ try {
44
+ // Handle @latest by resolving the latest tag
45
+ if (sdkVersion === "@latest") {
46
+ console.log("Resolving the latest version...");
47
+ try {
48
+ const latestTag = (0, child_process_1.spawnSync)('git', ['ls-remote', '--tags', repoUrl], { encoding: 'utf8' })
49
+ .stdout.split('\n')
50
+ .map(line => line.split('/').pop())
51
+ .filter(Boolean)
52
+ .sort()
53
+ .pop();
54
+ sdkVersion = latestTag || "main"; // Fallback to "main" if no tags are found
55
+ console.log(`Using the latest version: ${sdkVersion}`);
56
+ }
57
+ catch (err) {
58
+ console.error("Failed to resolve the latest version. Defaulting to 'main'.", err);
59
+ sdkVersion = "main";
60
+ }
61
+ }
62
+ // Clone the repo if not already cloned
63
+ if (!fs_1.default.existsSync(repoDir)) {
64
+ console.log('Cloning repository...');
65
+ runCommand('git', ['clone', repoUrl, repoDir]);
66
+ }
67
+ // Checkout branch or tag
68
+ if (branch) {
69
+ console.log(`Checking out branch: ${branch}`);
70
+ runCommand('git', ['-C', repoDir, 'fetch', 'origin']);
71
+ runCommand('git', ['-C', repoDir, 'checkout', branch]);
72
+ runCommand('git', ['-C', repoDir, 'pull', 'origin', branch]);
73
+ }
74
+ else {
75
+ console.log(`Checking out tag: ${sdkVersion}`);
76
+ runCommand('git', ['-C', repoDir, 'checkout', `tags/${sdkVersion}`]);
77
+ }
78
+ // Execute npm install in the root folder of repoDir
79
+ console.log('Running npm install...');
80
+ runCommand('npm', ['install'], { cwd: repoDir });
81
+ // Ensure the src folder exists
82
+ const srcFolder = path_1.default.join(node_process_1.default.cwd(), 'src');
83
+ if (!fs_1.default.existsSync(srcFolder)) {
84
+ console.log(`Creating src folder at ${srcFolder}...`);
85
+ fs_1.default.mkdirSync(srcFolder, { recursive: true });
86
+ }
87
+ // Delete and recreate symlink folders
88
+ hosannaFoldersToSymlink.forEach(folder => {
89
+ const targetDir = path_1.default.join(node_process_1.default.cwd(), folder);
90
+ const sourceDir = path_1.default.join(repoDir, '..', folder);
91
+ let targetExists = false;
92
+ try {
93
+ fs_1.default.lstatSync(targetDir); // Check if the path exists
94
+ targetExists = true;
95
+ }
96
+ catch (_a) {
97
+ targetExists = false; // Path does not exist
98
+ }
99
+ if (targetExists) {
100
+ if (fs_1.default.lstatSync(targetDir).isSymbolicLink()) {
101
+ const existingLink = fs_1.default.readlinkSync(targetDir);
102
+ if (existingLink === sourceDir) {
103
+ console.log(`Symlink already exists and points to the correct target: ${targetDir}`);
104
+ return; // Skip creating the symlink
105
+ }
106
+ else {
107
+ console.log(`Removing incorrect symlink: ${targetDir}`);
108
+ fs_1.default.unlinkSync(targetDir);
109
+ }
110
+ }
111
+ else {
112
+ console.log(`Removing existing directory or file: ${targetDir}`);
113
+ fs_1.default.rmSync(targetDir, { recursive: true, force: true });
114
+ }
115
+ }
116
+ console.log(`Creating symlink from ${sourceDir} to ${targetDir}`);
117
+ fs_1.default.symlinkSync(sourceDir, targetDir, 'dir');
118
+ });
119
+ prepareGitIgnore();
120
+ console.log('Update completed successfully.');
121
+ console.log();
122
+ console.log(`Installed version is ${sdkVersion}`);
123
+ node_process_1.default.exit(0); // Exit the CLI after successful completion
124
+ }
125
+ catch (error) {
126
+ if (error instanceof Error) {
127
+ console.error('An error occurred:', error.message);
128
+ }
129
+ else {
130
+ console.error('An unknown error occurred:', error);
131
+ }
132
+ node_process_1.default.exit(1); // Exit with error code on failure
133
+ }
134
+ }
135
+ exports.updateSdk = updateSdk;
136
+ function prepareGitIgnore() {
137
+ const gitIgnorePath = path_1.default.join(node_process_1.default.cwd(), '.gitignore');
138
+ const requiredEntries = [
139
+ ...hosannaFoldersToSymlink.map(folder => folder.replace(/^\//, '')),
140
+ '# hosanna sources',
141
+ 'source_*.brs',
142
+ 'source_*.brs.map',
143
+ 'hs_bridge*.brs',
144
+ 'hs_bridge*.brs.map',
145
+ 'platforms/roku/src/assets',
146
+ 'platforms/roku/.vscode/launch.json',
147
+ 'platforms/roku/src/components',
148
+ 'coverage',
149
+ 'hosanna_ui'
150
+ ];
151
+ let gitIgnoreContent = '';
152
+ if (fs_1.default.existsSync(gitIgnorePath)) {
153
+ gitIgnoreContent = fs_1.default.readFileSync(gitIgnorePath, 'utf8');
154
+ }
155
+ const gitIgnoreLines = new Set(gitIgnoreContent.split('\n').map(line => line.trim()));
156
+ let updated = false;
157
+ requiredEntries.forEach(entry => {
158
+ if (!gitIgnoreLines.has(entry)) {
159
+ gitIgnoreLines.add(entry);
160
+ updated = true;
161
+ }
162
+ });
163
+ if (updated) {
164
+ console.log('Updating .gitignore with required entries...');
165
+ fs_1.default.writeFileSync(gitIgnorePath, Array.from(gitIgnoreLines).join('\n') + '\n', 'utf8');
166
+ console.log('.gitignore updated successfully.');
167
+ }
168
+ else {
169
+ console.log('.gitignore already contains all required entries.');
170
+ }
171
+ }
172
+ exports.prepareGitIgnore = prepareGitIgnore;
173
+ async function promptUser(question) {
174
+ return new Promise(resolve => {
175
+ const answer = readline_sync_1.default.question(question);
176
+ resolve(answer);
177
+ });
178
+ }
179
+ async function installSdk() {
180
+ console.log("Welcome to the Hosanna SDK installer! Let's get started 🎉");
181
+ const hosannaUiUrl = await promptUser("What is your hosanna-ui URL? (default: git@github.com:TantaWowa/hosanna-ui.git):\n");
182
+ const tag = await promptUser("What is your tag? (default: @latest):\n");
183
+ const branch = await promptUser("What is your branch? (default: leave blank):\n");
184
+ const hosannaConfig = {
185
+ 'git-url': hosannaUiUrl || 'git@github.com:TantaWowa/hosanna-ui.git',
186
+ 'sdk-version': tag || '@latest',
187
+ branch: branch || ''
188
+ };
189
+ fs_1.default.writeFileSync('hosanna.json', JSON.stringify(hosannaConfig, null, 2), 'utf8');
190
+ console.log("hosanna.json created successfully! 🎉");
191
+ console.log("\nIn the future, you can update the SDK by changing the sdk-version or branch in the hosanna.json file.");
192
+ console.log("\nRunning updateSdk to complete the installation...");
193
+ await updateSdk();
194
+ }
195
+ exports.installSdk = installSdk;
196
+ //# sourceMappingURL=sdk-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-manager.js","sourceRoot":"","sources":["../../src/updater/sdk-manager.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@tantawowa/hosanna-tools",
3
+ "version": "0.1.0",
4
+ "type": "commonjs",
5
+ "main": "dist/cli.js",
6
+ "types": "dist/cli.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "bin": {
11
+ "hst": "dist/cli.js"
12
+ },
13
+ "repository": {
14
+ "url": "https://github.com/Tantawowa/hosanna-tools.git"
15
+ },
16
+ "scripts": {
17
+ "build": "rm -rf dist && tsc --project tsconfig.build.json && chmod +x dist/cli.js && node scripts/generateBuildInfo.js",
18
+ "start": "node dist/cli.js",
19
+ "test": "vitest --maxWorkers=20",
20
+ "testFast": "vitest --maxWorkers=40",
21
+ "lint": "eslint --config eslint.config.mjs --ignore-pattern \"node_modules/**\" --ignore-pattern \"dist/**\" --ignore-pattern \"**/*.d.ts\" --ignore-pattern \"**/*.js\"",
22
+ "lint-fix": "eslint --config eslint.config.mjs --ignore-pattern \"node_modules/**\" --ignore-pattern \"dist/**\" --ignore-pattern \"**/*.d.ts\" --ignore-pattern \"**/*.js\" --fix",
23
+ "lint-ide": "eslint --config eslint.config.mjs --ignore-pattern \"node_modules/**\" --ignore-pattern \"dist/**\" --ignore-pattern \"**/*.d.ts\" --ignore-pattern \"**/*.js\" --format compact"
24
+ },
25
+ "devDependencies": {
26
+ "@types/readline-sync": "^1.4.8",
27
+ "chokidar": "^4.0.3",
28
+ "eslint": "^9.17.0",
29
+ "eslint-formatter-compact": "^8.40.0",
30
+ "eslint-plugin-unused-imports": "^4.1.4",
31
+ "ts-jest": "^29.2.5",
32
+ "ts-node": "^10.9.2",
33
+ "typescript": "5.2.2",
34
+ "typescript-eslint": "^8.18.1",
35
+ "uuid": "10.0.0",
36
+ "vitest": "2.1.3",
37
+ "yargs": "^17.7.2"
38
+ },
39
+ "dependencies": {
40
+ "readline-sync": "^1.4.10"
41
+ }
42
+ }