azul-sync 1.3.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.
Files changed (133) hide show
  1. package/.gitattributes +1 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +31 -0
  3. package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  4. package/README.md +142 -0
  5. package/dist/build.d.ts +19 -0
  6. package/dist/build.d.ts.map +1 -0
  7. package/dist/build.js +92 -0
  8. package/dist/build.js.map +1 -0
  9. package/dist/cli.d.ts +3 -0
  10. package/dist/cli.d.ts.map +1 -0
  11. package/dist/cli.js +397 -0
  12. package/dist/cli.js.map +1 -0
  13. package/dist/config.d.ts +26 -0
  14. package/dist/config.d.ts.map +1 -0
  15. package/dist/config.js +105 -0
  16. package/dist/config.js.map +1 -0
  17. package/dist/fs/fileWriter.d.ts +100 -0
  18. package/dist/fs/fileWriter.d.ts.map +1 -0
  19. package/dist/fs/fileWriter.js +342 -0
  20. package/dist/fs/fileWriter.js.map +1 -0
  21. package/dist/fs/treeManager.d.ts +84 -0
  22. package/dist/fs/treeManager.d.ts.map +1 -0
  23. package/dist/fs/treeManager.js +365 -0
  24. package/dist/fs/treeManager.js.map +1 -0
  25. package/dist/fs/watcher.d.ts +39 -0
  26. package/dist/fs/watcher.d.ts.map +1 -0
  27. package/dist/fs/watcher.js +120 -0
  28. package/dist/fs/watcher.js.map +1 -0
  29. package/dist/index.d.ts +61 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +349 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/ipc/httpPolling.d.ts +56 -0
  34. package/dist/ipc/httpPolling.d.ts.map +1 -0
  35. package/dist/ipc/httpPolling.js +171 -0
  36. package/dist/ipc/httpPolling.js.map +1 -0
  37. package/dist/ipc/messages.d.ts +112 -0
  38. package/dist/ipc/messages.d.ts.map +1 -0
  39. package/dist/ipc/messages.js +5 -0
  40. package/dist/ipc/messages.js.map +1 -0
  41. package/dist/ipc/server.d.ts +50 -0
  42. package/dist/ipc/server.d.ts.map +1 -0
  43. package/dist/ipc/server.js +168 -0
  44. package/dist/ipc/server.js.map +1 -0
  45. package/dist/pack.d.ts +19 -0
  46. package/dist/pack.d.ts.map +1 -0
  47. package/dist/pack.js +225 -0
  48. package/dist/pack.js.map +1 -0
  49. package/dist/push.d.ts +43 -0
  50. package/dist/push.d.ts.map +1 -0
  51. package/dist/push.js +532 -0
  52. package/dist/push.js.map +1 -0
  53. package/dist/rojo.d.ts +9 -0
  54. package/dist/rojo.d.ts.map +1 -0
  55. package/dist/rojo.js +114 -0
  56. package/dist/rojo.js.map +1 -0
  57. package/dist/snapshot/rojo.d.ts +39 -0
  58. package/dist/snapshot/rojo.d.ts.map +1 -0
  59. package/dist/snapshot/rojo.js +364 -0
  60. package/dist/snapshot/rojo.js.map +1 -0
  61. package/dist/snapshot.d.ts +23 -0
  62. package/dist/snapshot.d.ts.map +1 -0
  63. package/dist/snapshot.js +132 -0
  64. package/dist/snapshot.js.map +1 -0
  65. package/dist/sourcemap/generator.d.ts +78 -0
  66. package/dist/sourcemap/generator.d.ts.map +1 -0
  67. package/dist/sourcemap/generator.js +351 -0
  68. package/dist/sourcemap/generator.js.map +1 -0
  69. package/dist/sourcemap/propertyLoader.d.ts +19 -0
  70. package/dist/sourcemap/propertyLoader.d.ts.map +1 -0
  71. package/dist/sourcemap/propertyLoader.js +131 -0
  72. package/dist/sourcemap/propertyLoader.js.map +1 -0
  73. package/dist/util/id.d.ts +9 -0
  74. package/dist/util/id.d.ts.map +1 -0
  75. package/dist/util/id.js +14 -0
  76. package/dist/util/id.js.map +1 -0
  77. package/dist/util/log.d.ts +13 -0
  78. package/dist/util/log.d.ts.map +1 -0
  79. package/dist/util/log.js +51 -0
  80. package/dist/util/log.js.map +1 -0
  81. package/docs/assets/azul-logo.pdn +0 -0
  82. package/docs/assets/logo-200px.png +0 -0
  83. package/docs/assets/logo.png +0 -0
  84. package/docs/assets/plugin/toolbox.png +0 -0
  85. package/docs/assets/synced.png +0 -0
  86. package/package.json +41 -0
  87. package/plugin/README.md +54 -0
  88. package/plugin/sourcemap.json +264 -0
  89. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/Actor/AzulSync.server.luau +905 -0
  90. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/AzulService.luau +1010 -0
  91. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/Config.luau +29 -0
  92. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/Enums.luau +11 -0
  93. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/CollapsibleTitledSection.luau +214 -0
  94. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/ColorPicker.luau +360 -0
  95. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/CustomTextButton.luau +170 -0
  96. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/DropdownMenu.luau +363 -0
  97. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/HorizontalLine.luau +43 -0
  98. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/ImageButtonWithText.luau +181 -0
  99. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/LabeledCheckbox.luau +295 -0
  100. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/LabeledColorInputPicker.luau +294 -0
  101. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/LabeledMultiChoice.luau +163 -0
  102. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/LabeledNumberInput.luau +312 -0
  103. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/LabeledRadioButton.luau +55 -0
  104. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/LabeledSlider.luau +151 -0
  105. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/LabeledTextInput.luau +222 -0
  106. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/LabeledToggleButton.luau +73 -0
  107. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/StatefulImageButton.luau +125 -0
  108. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/VerticalScrollingFrame.luau +100 -0
  109. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/VerticalSpacer.luau +35 -0
  110. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/VerticallyScalingListFrame.luau +107 -0
  111. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/GuiUtilities.luau +429 -0
  112. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/RbxGui.luau +4363 -0
  113. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/UI.luau +425 -0
  114. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/WebSocketClient.luau +161 -0
  115. package/src/build.ts +120 -0
  116. package/src/cli.ts +496 -0
  117. package/src/config.ts +170 -0
  118. package/src/fs/fileWriter.ts +414 -0
  119. package/src/fs/treeManager.ts +458 -0
  120. package/src/fs/watcher.ts +142 -0
  121. package/src/index.ts +450 -0
  122. package/src/ipc/httpPolling.ts +214 -0
  123. package/src/ipc/messages.ts +159 -0
  124. package/src/ipc/server.ts +196 -0
  125. package/src/pack.ts +309 -0
  126. package/src/push.ts +726 -0
  127. package/src/snapshot/rojo.ts +467 -0
  128. package/src/snapshot.ts +161 -0
  129. package/src/sourcemap/generator.ts +504 -0
  130. package/src/sourcemap/propertyLoader.ts +195 -0
  131. package/src/util/id.ts +15 -0
  132. package/src/util/log.ts +94 -0
  133. package/tsconfig.json +24 -0
package/dist/rojo.js ADDED
@@ -0,0 +1,114 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { log } from "./util/log.js";
4
+ const DEFAULT_PROJECT_FILE = "default.project.json";
5
+ const SERVICE_NAMES = new Set([
6
+ "Workspace",
7
+ "ReplicatedStorage",
8
+ "ServerStorage",
9
+ "ServerScriptService",
10
+ "StarterPlayer",
11
+ "StarterPack",
12
+ "StarterGui",
13
+ "StarterCharacterScripts",
14
+ "StarterPlayerScripts",
15
+ "StarterGear",
16
+ "ReplicatedFirst",
17
+ "Lighting",
18
+ "SoundService",
19
+ ]);
20
+ async function fileExists(p) {
21
+ try {
22
+ const stat = await fs.stat(p);
23
+ return stat.isFile();
24
+ }
25
+ catch {
26
+ return false;
27
+ }
28
+ }
29
+ async function readJson(filePath) {
30
+ try {
31
+ const raw = await fs.readFile(filePath, "utf-8");
32
+ return JSON.parse(raw);
33
+ }
34
+ catch (error) {
35
+ log.warn(`Failed to read Rojo project ${filePath}:`, error);
36
+ return null;
37
+ }
38
+ }
39
+ function isTreeAbsolute(tree) {
40
+ return Object.keys(tree || {}).some((key) => SERVICE_NAMES.has(key));
41
+ }
42
+ function collectMounts(node, currentPath, baseDir, mounts, treeIsAbsolute) {
43
+ if (!node || typeof node !== "object")
44
+ return;
45
+ for (const [key, value] of Object.entries(node)) {
46
+ if (key.startsWith("$")) {
47
+ continue;
48
+ }
49
+ if (!value || typeof value !== "object") {
50
+ continue;
51
+ }
52
+ const nextPath = [...currentPath, key];
53
+ const pathValue = value["$path"];
54
+ if (typeof pathValue === "string" && pathValue.trim() !== "") {
55
+ const resolved = path.resolve(baseDir, pathValue);
56
+ mounts.push({ sourceDir: resolved, destPath: nextPath, treeIsAbsolute });
57
+ }
58
+ collectMounts(value, nextPath, baseDir, mounts, treeIsAbsolute);
59
+ }
60
+ }
61
+ export async function resolveRojoMounts(sourceDir) {
62
+ const projectFile = path.join(sourceDir, DEFAULT_PROJECT_FILE);
63
+ if (!(await fileExists(projectFile))) {
64
+ return [];
65
+ }
66
+ const project = await readJson(projectFile);
67
+ if (!project || typeof project !== "object") {
68
+ return [];
69
+ }
70
+ const tree = project.tree || {};
71
+ const absolute = isTreeAbsolute(tree);
72
+ const mounts = [];
73
+ collectMounts(tree, [], path.dirname(projectFile), mounts, absolute);
74
+ return mounts;
75
+ }
76
+ export async function findNestedRojoProjects(sourceDir, maxDepth = 5) {
77
+ const results = [];
78
+ const queue = [
79
+ { dir: sourceDir, depth: 0 },
80
+ ];
81
+ const visited = new Set();
82
+ while (queue.length > 0) {
83
+ const { dir, depth } = queue.shift();
84
+ const real = await fs.realpath(dir);
85
+ if (visited.has(real))
86
+ continue;
87
+ visited.add(real);
88
+ if (depth > maxDepth)
89
+ continue;
90
+ const entries = await fs.readdir(dir, { withFileTypes: true });
91
+ for (const entry of entries) {
92
+ if (!entry.isDirectory() && !entry.isSymbolicLink())
93
+ continue;
94
+ const nextDir = path.join(dir, entry.name);
95
+ const projectFile = path.join(nextDir, DEFAULT_PROJECT_FILE);
96
+ if (await fileExists(projectFile)) {
97
+ results.push(nextDir);
98
+ continue;
99
+ }
100
+ if (depth < maxDepth) {
101
+ queue.push({ dir: nextDir, depth: depth + 1 });
102
+ }
103
+ }
104
+ }
105
+ return results;
106
+ }
107
+ export function adjustDestPrefix(destPrefix, mount) {
108
+ // If the Rojo tree already targets services, treat its paths as absolute and do not prepend destPrefix.
109
+ if (mount.treeIsAbsolute) {
110
+ return [];
111
+ }
112
+ return destPrefix;
113
+ }
114
+ //# sourceMappingURL=rojo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rojo.js","sourceRoot":"","sources":["../src/rojo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { InstanceData } from "../ipc/messages.js";
2
+ export interface RojoSnapshotOptions {
3
+ projectFile?: string;
4
+ cwd?: string;
5
+ destPrefix?: string[];
6
+ }
7
+ /**
8
+ * Builds InstanceData[] from a Rojo-style default.project.json (compat layer).
9
+ */
10
+ export declare class RojoSnapshotBuilder {
11
+ private projectFile;
12
+ private cwd;
13
+ private emittedFolders;
14
+ private moduleContainers;
15
+ private destPrefix;
16
+ private ignoreMatchers;
17
+ constructor(options?: RojoSnapshotOptions);
18
+ build(): Promise<InstanceData[]>;
19
+ private loadProjectFrom;
20
+ private prepareIgnoreMatchers;
21
+ private globToRegex;
22
+ private isIgnored;
23
+ private walkTree;
24
+ private emitNode;
25
+ private resolveClassName;
26
+ private walkDirectory;
27
+ /**
28
+ * Ensure a Folder chain exists for the given path.
29
+ */
30
+ private ensureFolder;
31
+ private findInit;
32
+ private getInitCandidates;
33
+ private isScriptFile;
34
+ private classifyScript;
35
+ private exists;
36
+ private pathKind;
37
+ private makeGuid;
38
+ }
39
+ //# sourceMappingURL=rojo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rojo.d.ts","sourceRoot":"","sources":["../../src/snapshot/rojo.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOvD,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,UAAU,CAAW;IAC7B,OAAO,CAAC,cAAc,CAAgB;gBAE1B,OAAO,GAAE,mBAAwB;IAShC,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAyE/B,eAAe;IAmB7B,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,SAAS;YAUH,QAAQ;YAeR,QAAQ;IAoEtB,OAAO,CAAC,gBAAgB;YAcV,aAAa;IAqG3B;;OAEG;IACH,OAAO,CAAC,YAAY;YAgBN,QAAQ;IAgBtB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;YAyBR,MAAM;YASN,QAAQ;IAWtB,OAAO,CAAC,QAAQ;CAGjB"}
@@ -0,0 +1,364 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { randomUUID } from "node:crypto";
4
+ import { log } from "../util/log.js";
5
+ /**
6
+ * Builds InstanceData[] from a Rojo-style default.project.json (compat layer).
7
+ */
8
+ export class RojoSnapshotBuilder {
9
+ projectFile;
10
+ cwd;
11
+ emittedFolders = new Set();
12
+ moduleContainers = new Set();
13
+ destPrefix;
14
+ ignoreMatchers = [];
15
+ constructor(options = {}) {
16
+ this.cwd = path.resolve(options.cwd ?? process.cwd());
17
+ this.projectFile = path.resolve(this.cwd, options.projectFile ?? "default.project.json");
18
+ this.destPrefix = options.destPrefix ?? [];
19
+ }
20
+ async build() {
21
+ const project = await this.loadProjectFrom(this.projectFile);
22
+ this.prepareIgnoreMatchers(project);
23
+ const results = [];
24
+ const projectDir = path.dirname(this.projectFile);
25
+ const tree = project.tree ?? {};
26
+ const hasChildren = Object.keys(tree).some((k) => !k.startsWith("$"));
27
+ const rootPath = typeof tree.$path === "string" ? tree.$path : null;
28
+ if (!hasChildren && rootPath) {
29
+ const absRoot = path.resolve(projectDir, rootPath);
30
+ const rootKind = await this.pathKind(absRoot);
31
+ if (rootKind === "file") {
32
+ if (!this.isScriptFile(path.basename(absRoot))) {
33
+ throw new Error(`$path target ${absRoot} must be a .lua or .luau script file.`);
34
+ }
35
+ const { className, scriptName } = this.classifyScript(path.basename(absRoot));
36
+ const source = await fs.readFile(absRoot, "utf-8");
37
+ const destPath = this.destPrefix.length === 0
38
+ ? [scriptName]
39
+ : this.destPrefix[this.destPrefix.length - 1] === scriptName
40
+ ? [...this.destPrefix]
41
+ : [...this.destPrefix, scriptName];
42
+ this.ensureFolder(destPath.slice(0, -1), results);
43
+ this.moduleContainers.add(destPath.join("/"));
44
+ results.push({
45
+ guid: this.makeGuid(),
46
+ className,
47
+ name: destPath[destPath.length - 1],
48
+ path: destPath,
49
+ source,
50
+ });
51
+ }
52
+ else {
53
+ if (!rootKind) {
54
+ throw new Error(`$path target ${absRoot} does not exist.`);
55
+ }
56
+ await this.walkDirectory(absRoot, [...this.destPrefix], results, new Set());
57
+ }
58
+ }
59
+ else {
60
+ await this.walkTree(tree, [], projectDir, results);
61
+ }
62
+ // Stable ordering: shallow-first, then lexical for determinism
63
+ results.sort((a, b) => {
64
+ if (a.path.length !== b.path.length) {
65
+ return a.path.length - b.path.length;
66
+ }
67
+ return a.path.join("/").localeCompare(b.path.join("/"));
68
+ });
69
+ log.success(`Rojo compatibility build produced ${results.length} instances`);
70
+ return results;
71
+ }
72
+ async loadProjectFrom(file) {
73
+ let raw;
74
+ try {
75
+ raw = await fs.readFile(file, "utf-8");
76
+ }
77
+ catch (error) {
78
+ throw new Error(`Rojo compatibility mode requires ${file} (not found).`);
79
+ }
80
+ try {
81
+ const parsed = JSON.parse(raw);
82
+ if (!parsed || typeof parsed !== "object" || !parsed.tree) {
83
+ throw new Error("Missing tree key");
84
+ }
85
+ return parsed;
86
+ }
87
+ catch (error) {
88
+ throw new Error(`Failed to parse Rojo project file at ${file}: ${error}`);
89
+ }
90
+ }
91
+ prepareIgnoreMatchers(project) {
92
+ const defaults = [
93
+ "**/.git/**",
94
+ "**/.git",
95
+ "**/.github/**",
96
+ "**/sourcemap.json",
97
+ "**/*.lock",
98
+ "**/~$*",
99
+ ];
100
+ const user = Array.isArray(project.globIgnorePaths)
101
+ ? project.globIgnorePaths
102
+ : project.globIgnorePaths
103
+ ? [project.globIgnorePaths]
104
+ : [];
105
+ const patterns = [...defaults, ...user];
106
+ this.ignoreMatchers = patterns.map((p) => this.globToRegex(p));
107
+ }
108
+ globToRegex(glob) {
109
+ const escaped = glob.replace(/([|\\{}()\[\]^$+*?.])/g, "\\$1");
110
+ const regex = escaped
111
+ .replace(/\*\*/g, ".*")
112
+ .replace(/\*/g, "[^/]*")
113
+ .replace(/\?/g, "[^/]");
114
+ return new RegExp(`^${regex}$`);
115
+ }
116
+ isIgnored(absPath) {
117
+ const rel = path.relative(this.cwd, absPath).replace(/\\/g, "/");
118
+ for (const matcher of this.ignoreMatchers) {
119
+ if (matcher.test(rel)) {
120
+ return true;
121
+ }
122
+ }
123
+ return false;
124
+ }
125
+ async walkTree(node, parentPath, projectDir, results) {
126
+ for (const [name, value] of Object.entries(node)) {
127
+ if (name.startsWith("$"))
128
+ continue;
129
+ if (typeof value !== "object" || value === null)
130
+ continue;
131
+ const pathSegments = [...this.destPrefix, ...parentPath, name];
132
+ await this.emitNode(name, value, pathSegments, projectDir, results);
133
+ }
134
+ }
135
+ async emitNode(name, node, pathSegments, projectDir, results) {
136
+ const className = this.resolveClassName(node, pathSegments);
137
+ const pathHint = typeof node.$path === "string" ? node.$path : undefined;
138
+ const absPath = pathHint ? path.resolve(projectDir, pathHint) : null;
139
+ const definedChildren = new Set(Object.keys(node).filter((key) => !key.startsWith("$")));
140
+ const pathKind = absPath ? await this.pathKind(absPath) : null;
141
+ let initScript = null;
142
+ if (absPath && pathKind === "dir") {
143
+ initScript = await this.findInit(absPath);
144
+ }
145
+ else if (absPath && pathKind === "file") {
146
+ const fileName = path.basename(absPath);
147
+ if (!this.isScriptFile(fileName)) {
148
+ throw new Error(`$path target ${absPath} is not a .lua/.luau file.`);
149
+ }
150
+ const source = await fs.readFile(absPath, "utf-8");
151
+ initScript = { fileName, source };
152
+ }
153
+ // If there's an init script, the folder becomes a ModuleScript at the same path.
154
+ if (initScript) {
155
+ this.ensureFolder(pathSegments.slice(0, -1), results);
156
+ this.moduleContainers.add(pathSegments.join("/"));
157
+ const scriptClass = this.classifyScript(initScript.fileName).className;
158
+ results.push({
159
+ guid: this.makeGuid(),
160
+ className: scriptClass,
161
+ name: pathSegments[pathSegments.length - 1],
162
+ path: [...pathSegments],
163
+ source: initScript.source,
164
+ });
165
+ }
166
+ else {
167
+ this.ensureFolder(pathSegments.slice(0, -1), results);
168
+ results.push({
169
+ guid: this.makeGuid(),
170
+ className,
171
+ name,
172
+ path: [...pathSegments],
173
+ });
174
+ }
175
+ // Recurse into children defined in JSON
176
+ for (const [childName, childValue] of Object.entries(node)) {
177
+ if (childName.startsWith("$"))
178
+ continue;
179
+ if (typeof childValue !== "object" || childValue === null)
180
+ continue;
181
+ await this.emitNode(childName, childValue, [...pathSegments, childName], projectDir, results);
182
+ }
183
+ // Walk filesystem for $path mappings
184
+ if (absPath && pathKind === "dir") {
185
+ await this.walkDirectory(absPath, pathSegments, results, definedChildren);
186
+ }
187
+ }
188
+ resolveClassName(node, pathSegments) {
189
+ if (typeof node.$className === "string") {
190
+ return node.$className;
191
+ }
192
+ if (pathSegments.length === 1) {
193
+ // Service root
194
+ return pathSegments[0];
195
+ }
196
+ return "Folder";
197
+ }
198
+ async walkDirectory(dirPath, destPath, results, definedChildren) {
199
+ if (this.isIgnored(dirPath))
200
+ return;
201
+ const entries = await fs.readdir(dirPath, { withFileTypes: true });
202
+ const initCandidates = this.getInitCandidates();
203
+ // If this directory has an init, the directory becomes that script; children attach under it
204
+ const initEntry = entries.find((e) => e.isFile() && initCandidates.includes(e.name));
205
+ if (initEntry) {
206
+ const key = destPath.join("/");
207
+ if (!this.moduleContainers.has(key)) {
208
+ this.moduleContainers.add(key);
209
+ this.ensureFolder(destPath.slice(0, -1), results);
210
+ const scriptClass = this.classifyScript(initEntry.name).className;
211
+ const source = await fs.readFile(path.join(dirPath, initEntry.name), "utf-8");
212
+ results.push({
213
+ guid: this.makeGuid(),
214
+ className: scriptClass,
215
+ name: destPath[destPath.length - 1] ?? path.basename(dirPath),
216
+ path: [...destPath],
217
+ source,
218
+ });
219
+ }
220
+ }
221
+ else {
222
+ this.ensureFolder(destPath, results);
223
+ }
224
+ // Sub-project override
225
+ const subProjectPath = path.join(dirPath, "default.project.json");
226
+ if (await this.exists(subProjectPath)) {
227
+ const previousProjectFile = this.projectFile;
228
+ const previousIgnore = this.ignoreMatchers;
229
+ this.projectFile = subProjectPath;
230
+ const subProject = await this.loadProjectFrom(subProjectPath);
231
+ this.prepareIgnoreMatchers(subProject);
232
+ await this.walkTree(subProject.tree ?? {}, destPath, dirPath, results);
233
+ this.projectFile = previousProjectFile;
234
+ this.ignoreMatchers = previousIgnore;
235
+ return;
236
+ }
237
+ for (const entry of entries) {
238
+ const fullPath = path.join(dirPath, entry.name);
239
+ if (this.isIgnored(fullPath))
240
+ continue;
241
+ // Skip entries explicitly defined in the project tree
242
+ if (definedChildren.has(entry.name)) {
243
+ continue;
244
+ }
245
+ if (entry.isDirectory()) {
246
+ this.ensureFolder([...destPath, entry.name], results);
247
+ await this.walkDirectory(fullPath, [...destPath, entry.name], results, new Set());
248
+ continue;
249
+ }
250
+ // Skip init files here (handled earlier)
251
+ if (initCandidates.includes(entry.name)) {
252
+ continue;
253
+ }
254
+ if (this.isScriptFile(entry.name)) {
255
+ const baseName = path.parse(entry.name).name;
256
+ if (definedChildren.has(baseName)) {
257
+ continue;
258
+ }
259
+ const { className, scriptName } = this.classifyScript(entry.name);
260
+ if (definedChildren.has(scriptName)) {
261
+ continue;
262
+ }
263
+ const source = await fs.readFile(fullPath, "utf-8");
264
+ this.ensureFolder(destPath, results);
265
+ results.push({
266
+ guid: this.makeGuid(),
267
+ className,
268
+ name: scriptName,
269
+ path: [...destPath, scriptName],
270
+ source,
271
+ });
272
+ }
273
+ }
274
+ }
275
+ /**
276
+ * Ensure a Folder chain exists for the given path.
277
+ */
278
+ ensureFolder(pathSegments, results) {
279
+ if (pathSegments.length === 0)
280
+ return;
281
+ const key = pathSegments.join("/");
282
+ if (this.moduleContainers.has(key))
283
+ return;
284
+ if (this.emittedFolders.has(key))
285
+ return;
286
+ // ensure parents first
287
+ this.ensureFolder(pathSegments.slice(0, -1), results);
288
+ this.emittedFolders.add(key);
289
+ results.push({
290
+ guid: this.makeGuid(),
291
+ className: "Folder",
292
+ name: pathSegments[pathSegments.length - 1],
293
+ path: [...pathSegments],
294
+ });
295
+ }
296
+ async findInit(dirPath) {
297
+ const candidates = this.getInitCandidates();
298
+ for (const candidate of candidates) {
299
+ const full = path.join(dirPath, candidate);
300
+ if (await this.exists(full)) {
301
+ const source = await fs.readFile(full, "utf-8");
302
+ return { fileName: candidate, source };
303
+ }
304
+ }
305
+ return null;
306
+ }
307
+ getInitCandidates() {
308
+ const bases = ["init", "init.server", "init.client", "init.module"];
309
+ const variants = [];
310
+ for (const base of bases) {
311
+ variants.push(`${base}.lua`, `${base}.luau`);
312
+ }
313
+ return [...new Set(variants)];
314
+ }
315
+ isScriptFile(fileName) {
316
+ return fileName.endsWith(".lua") || fileName.endsWith(".luau");
317
+ }
318
+ classifyScript(fileName) {
319
+ const normalized = fileName.replace(/\.lua$/i, ".luau");
320
+ const base = normalized.replace(/\.luau$/i, "");
321
+ if (base.endsWith(".server")) {
322
+ return { className: "Script", scriptName: base.replace(/\.server$/, "") };
323
+ }
324
+ if (base.endsWith(".client")) {
325
+ return {
326
+ className: "LocalScript",
327
+ scriptName: base.replace(/\.client$/, ""),
328
+ };
329
+ }
330
+ if (base.endsWith(".module")) {
331
+ return {
332
+ className: "ModuleScript",
333
+ scriptName: base.replace(/\.module$/, ""),
334
+ };
335
+ }
336
+ return { className: "ModuleScript", scriptName: base };
337
+ }
338
+ async exists(target) {
339
+ try {
340
+ await fs.access(target);
341
+ return true;
342
+ }
343
+ catch {
344
+ return false;
345
+ }
346
+ }
347
+ async pathKind(target) {
348
+ try {
349
+ const stat = await fs.stat(target);
350
+ if (stat.isDirectory())
351
+ return "dir";
352
+ if (stat.isFile())
353
+ return "file";
354
+ return null;
355
+ }
356
+ catch {
357
+ return null;
358
+ }
359
+ }
360
+ makeGuid() {
361
+ return randomUUID().replace(/-/g, "");
362
+ }
363
+ }
364
+ //# sourceMappingURL=rojo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rojo.js","sourceRoot":"","sources":["../../src/snapshot/rojo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { InstanceData } from "./ipc/messages.js";
2
+ export interface SnapshotOptions {
3
+ sourceDir: string;
4
+ destPrefix?: string[];
5
+ skipSymlinks?: boolean;
6
+ }
7
+ export declare class SnapshotBuilder {
8
+ private sourceDir;
9
+ private destPrefix;
10
+ private skipSymlinks;
11
+ private folderMap;
12
+ private results;
13
+ private scriptPaths;
14
+ constructor(options: SnapshotOptions);
15
+ build(): Promise<InstanceData[]>;
16
+ private walk;
17
+ private ensureFolder;
18
+ private relativeSegments;
19
+ private classifyScript;
20
+ private makeGuid;
21
+ private pathKey;
22
+ }
23
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAW;IAC7B,OAAO,CAAC,YAAY,CAAU;IAE9B,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,WAAW,CAAqB;gBAE5B,OAAO,EAAE,eAAe;IAMvB,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAW/B,IAAI;IAgElB,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,OAAO;CAGhB"}