@nodetool-ai/video-nodes 0.8.1

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 (152) hide show
  1. package/README.md +58 -0
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/index.d.ts +9 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +11 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/nodes/ffmpeg-helpers.d.ts +77 -0
  8. package/dist/nodes/ffmpeg-helpers.d.ts.map +1 -0
  9. package/dist/nodes/ffmpeg-helpers.js +220 -0
  10. package/dist/nodes/ffmpeg-helpers.js.map +1 -0
  11. package/dist/nodes/lib-video-download.d.ts +29 -0
  12. package/dist/nodes/lib-video-download.d.ts.map +1 -0
  13. package/dist/nodes/lib-video-download.js +353 -0
  14. package/dist/nodes/lib-video-download.js.map +1 -0
  15. package/dist/nodes/model3d/analysis.d.ts +16 -0
  16. package/dist/nodes/model3d/analysis.d.ts.map +1 -0
  17. package/dist/nodes/model3d/analysis.js +38 -0
  18. package/dist/nodes/model3d/analysis.js.map +1 -0
  19. package/dist/nodes/model3d/base.d.ts +28 -0
  20. package/dist/nodes/model3d/base.d.ts.map +1 -0
  21. package/dist/nodes/model3d/base.js +20 -0
  22. package/dist/nodes/model3d/base.js.map +1 -0
  23. package/dist/nodes/model3d/boolean-ops.d.ts +2 -0
  24. package/dist/nodes/model3d/boolean-ops.d.ts.map +1 -0
  25. package/dist/nodes/model3d/boolean-ops.js +172 -0
  26. package/dist/nodes/model3d/boolean-ops.js.map +1 -0
  27. package/dist/nodes/model3d/cleanup.d.ts +56 -0
  28. package/dist/nodes/model3d/cleanup.d.ts.map +1 -0
  29. package/dist/nodes/model3d/cleanup.js +144 -0
  30. package/dist/nodes/model3d/cleanup.js.map +1 -0
  31. package/dist/nodes/model3d/convert.d.ts +27 -0
  32. package/dist/nodes/model3d/convert.d.ts.map +1 -0
  33. package/dist/nodes/model3d/convert.js +66 -0
  34. package/dist/nodes/model3d/convert.js.map +1 -0
  35. package/dist/nodes/model3d/defaults.d.ts +34 -0
  36. package/dist/nodes/model3d/defaults.d.ts.map +1 -0
  37. package/dist/nodes/model3d/defaults.js +28 -0
  38. package/dist/nodes/model3d/defaults.js.map +1 -0
  39. package/dist/nodes/model3d/document-ops.d.ts +4 -0
  40. package/dist/nodes/model3d/document-ops.d.ts.map +1 -0
  41. package/dist/nodes/model3d/document-ops.js +40 -0
  42. package/dist/nodes/model3d/document-ops.js.map +1 -0
  43. package/dist/nodes/model3d/generation.d.ts +56 -0
  44. package/dist/nodes/model3d/generation.d.ts.map +1 -0
  45. package/dist/nodes/model3d/generation.js +203 -0
  46. package/dist/nodes/model3d/generation.js.map +1 -0
  47. package/dist/nodes/model3d/glb.d.ts +29 -0
  48. package/dist/nodes/model3d/glb.d.ts.map +1 -0
  49. package/dist/nodes/model3d/glb.js +255 -0
  50. package/dist/nodes/model3d/glb.js.map +1 -0
  51. package/dist/nodes/model3d/index.d.ts +22 -0
  52. package/dist/nodes/model3d/index.d.ts.map +1 -0
  53. package/dist/nodes/model3d/index.js +41 -0
  54. package/dist/nodes/model3d/index.js.map +1 -0
  55. package/dist/nodes/model3d/io.d.ts +81 -0
  56. package/dist/nodes/model3d/io.d.ts.map +1 -0
  57. package/dist/nodes/model3d/io.js +162 -0
  58. package/dist/nodes/model3d/io.js.map +1 -0
  59. package/dist/nodes/model3d/mesh-ops.d.ts +40 -0
  60. package/dist/nodes/model3d/mesh-ops.d.ts.map +1 -0
  61. package/dist/nodes/model3d/mesh-ops.js +775 -0
  62. package/dist/nodes/model3d/mesh-ops.js.map +1 -0
  63. package/dist/nodes/model3d/nodes.d.ts +2 -0
  64. package/dist/nodes/model3d/nodes.d.ts.map +1 -0
  65. package/dist/nodes/model3d/nodes.js +2 -0
  66. package/dist/nodes/model3d/nodes.js.map +1 -0
  67. package/dist/nodes/model3d/ops.d.ts +44 -0
  68. package/dist/nodes/model3d/ops.d.ts.map +1 -0
  69. package/dist/nodes/model3d/ops.js +142 -0
  70. package/dist/nodes/model3d/ops.js.map +1 -0
  71. package/dist/nodes/model3d/render.d.ts +51 -0
  72. package/dist/nodes/model3d/render.d.ts.map +1 -0
  73. package/dist/nodes/model3d/render.js +124 -0
  74. package/dist/nodes/model3d/render.js.map +1 -0
  75. package/dist/nodes/model3d/render3d-core.d.ts +177 -0
  76. package/dist/nodes/model3d/render3d-core.d.ts.map +1 -0
  77. package/dist/nodes/model3d/render3d-core.js +366 -0
  78. package/dist/nodes/model3d/render3d-core.js.map +1 -0
  79. package/dist/nodes/model3d/render3d-headless.d.ts +75 -0
  80. package/dist/nodes/model3d/render3d-headless.d.ts.map +1 -0
  81. package/dist/nodes/model3d/render3d-headless.js +190 -0
  82. package/dist/nodes/model3d/render3d-headless.js.map +1 -0
  83. package/dist/nodes/model3d/render3d-page.d.ts +16 -0
  84. package/dist/nodes/model3d/render3d-page.d.ts.map +1 -0
  85. package/dist/nodes/model3d/render3d-page.js +51 -0
  86. package/dist/nodes/model3d/render3d-page.js.map +1 -0
  87. package/dist/nodes/model3d/transforms.d.ts +56 -0
  88. package/dist/nodes/model3d/transforms.d.ts.map +1 -0
  89. package/dist/nodes/model3d/transforms.js +148 -0
  90. package/dist/nodes/model3d/transforms.js.map +1 -0
  91. package/dist/nodes/model3d/types.d.ts +82 -0
  92. package/dist/nodes/model3d/types.d.ts.map +1 -0
  93. package/dist/nodes/model3d/types.js +2 -0
  94. package/dist/nodes/model3d/types.js.map +1 -0
  95. package/dist/nodes/model3d/utils.d.ts +46 -0
  96. package/dist/nodes/model3d/utils.d.ts.map +1 -0
  97. package/dist/nodes/model3d/utils.js +190 -0
  98. package/dist/nodes/model3d/utils.js.map +1 -0
  99. package/dist/nodes/model3d.d.ts +2 -0
  100. package/dist/nodes/model3d.d.ts.map +1 -0
  101. package/dist/nodes/model3d.js +2 -0
  102. package/dist/nodes/model3d.js.map +1 -0
  103. package/dist/nodes/placeholder-values.d.ts +10 -0
  104. package/dist/nodes/placeholder-values.d.ts.map +1 -0
  105. package/dist/nodes/placeholder-values.js +19 -0
  106. package/dist/nodes/placeholder-values.js.map +1 -0
  107. package/dist/nodes/script.d.ts +161 -0
  108. package/dist/nodes/script.d.ts.map +1 -0
  109. package/dist/nodes/script.js +673 -0
  110. package/dist/nodes/script.js.map +1 -0
  111. package/dist/nodes/storyboard.d.ts +269 -0
  112. package/dist/nodes/storyboard.d.ts.map +1 -0
  113. package/dist/nodes/storyboard.js +1017 -0
  114. package/dist/nodes/storyboard.js.map +1 -0
  115. package/dist/nodes/timeline/assetFiles.d.ts +19 -0
  116. package/dist/nodes/timeline/assetFiles.d.ts.map +1 -0
  117. package/dist/nodes/timeline/assetFiles.js +52 -0
  118. package/dist/nodes/timeline/assetFiles.js.map +1 -0
  119. package/dist/nodes/timeline/compositeRender.d.ts +60 -0
  120. package/dist/nodes/timeline/compositeRender.d.ts.map +1 -0
  121. package/dist/nodes/timeline/compositeRender.js +508 -0
  122. package/dist/nodes/timeline/compositeRender.js.map +1 -0
  123. package/dist/nodes/timeline/contactSheet.d.ts +43 -0
  124. package/dist/nodes/timeline/contactSheet.d.ts.map +1 -0
  125. package/dist/nodes/timeline/contactSheet.js +78 -0
  126. package/dist/nodes/timeline/contactSheet.js.map +1 -0
  127. package/dist/nodes/timeline/outputFormats.d.ts +69 -0
  128. package/dist/nodes/timeline/outputFormats.d.ts.map +1 -0
  129. package/dist/nodes/timeline/outputFormats.js +173 -0
  130. package/dist/nodes/timeline/outputFormats.js.map +1 -0
  131. package/dist/nodes/timeline/pngSequence.d.ts +44 -0
  132. package/dist/nodes/timeline/pngSequence.d.ts.map +1 -0
  133. package/dist/nodes/timeline/pngSequence.js +172 -0
  134. package/dist/nodes/timeline/pngSequence.js.map +1 -0
  135. package/dist/nodes/timeline/rasterizers.d.ts +47 -0
  136. package/dist/nodes/timeline/rasterizers.d.ts.map +1 -0
  137. package/dist/nodes/timeline/rasterizers.js +103 -0
  138. package/dist/nodes/timeline/rasterizers.js.map +1 -0
  139. package/dist/nodes/timeline/rawFrames.d.ts +149 -0
  140. package/dist/nodes/timeline/rawFrames.d.ts.map +1 -0
  141. package/dist/nodes/timeline/rawFrames.js +598 -0
  142. package/dist/nodes/timeline/rawFrames.js.map +1 -0
  143. package/dist/nodes/timeline.d.ts +206 -0
  144. package/dist/nodes/timeline.d.ts.map +1 -0
  145. package/dist/nodes/timeline.js +1395 -0
  146. package/dist/nodes/timeline.js.map +1 -0
  147. package/dist/nodes/video.d.ts +705 -0
  148. package/dist/nodes/video.d.ts.map +1 -0
  149. package/dist/nodes/video.js +2672 -0
  150. package/dist/nodes/video.js.map +1 -0
  151. package/dist/render3d-page.js +4118 -0
  152. package/package.json +95 -0
@@ -0,0 +1,41 @@
1
+ export { GlbTransformNode, glbOutput } from "./base.js";
2
+ export * from "./defaults.js";
3
+ export * from "./io.js";
4
+ export * from "./convert.js";
5
+ export * from "./analysis.js";
6
+ export * from "./transforms.js";
7
+ export * from "./cleanup.js";
8
+ export * from "./ops.js";
9
+ export * from "./generation.js";
10
+ export * from "./render.js";
11
+ import { LoadModel3DFileNode } from "./io.js";
12
+ import { SaveModel3DFileNode } from "./io.js";
13
+ import { SaveModel3DNode } from "./io.js";
14
+ import { FormatConverterNode } from "./convert.js";
15
+ import { GetModel3DMetadataNode } from "./analysis.js";
16
+ import { Transform3DNode, CenterMeshNode, NormalizeModel3DNode } from "./transforms.js";
17
+ import { DecimateNode, Boolean3DNode, MergeMeshesNode } from "./ops.js";
18
+ import { RecalculateNormalsNode, FlipNormalsNode, ExtractLargestComponentNode, RepairMeshNode } from "./cleanup.js";
19
+ import { TextTo3DNode, ImageTo3DNode } from "./generation.js";
20
+ import { RenderToImageNode } from "./render.js";
21
+ export const MODEL3D_NODES = [
22
+ LoadModel3DFileNode,
23
+ SaveModel3DFileNode,
24
+ SaveModel3DNode,
25
+ FormatConverterNode,
26
+ GetModel3DMetadataNode,
27
+ Transform3DNode,
28
+ DecimateNode,
29
+ Boolean3DNode,
30
+ RecalculateNormalsNode,
31
+ CenterMeshNode,
32
+ FlipNormalsNode,
33
+ NormalizeModel3DNode,
34
+ ExtractLargestComponentNode,
35
+ RepairMeshNode,
36
+ MergeMeshesNode,
37
+ TextTo3DNode,
38
+ ImageTo3DNode,
39
+ RenderToImageNode
40
+ ];
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nodes/model3d/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACxD,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,2BAA2B,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACpH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,mBAAmB;IACnB,mBAAmB;IACnB,eAAe;IACf,mBAAmB;IACnB,sBAAsB;IACtB,eAAe;IACf,YAAY;IACZ,aAAa;IACb,sBAAsB;IACtB,cAAc;IACd,eAAe;IACf,oBAAoB;IACpB,2BAA2B;IAC3B,cAAc;IACd,eAAe;IACf,YAAY;IACZ,aAAa;IACb,iBAAiB;CACT,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { BaseNode } from "@nodetool-ai/node-sdk";
2
+ import type { ProcessingContext } from "@nodetool-ai/runtime";
3
+ import type { Model3DRefLike } from "./types.js";
4
+ /**
5
+ * What a `folder` slot delivers. Mirrors `FolderValue` in nodes-utils'
6
+ * save-target.ts, which the package index does not re-export.
7
+ */
8
+ type FolderRefLike = string | {
9
+ uri?: string;
10
+ } | null;
11
+ /** Output handles LoadModel3DFileNode.process() emits. */
12
+ type LoadModel3DFileNodeOutputs = {
13
+ output: {
14
+ type: string;
15
+ asset_id: null;
16
+ metadata: null;
17
+ data: string;
18
+ };
19
+ };
20
+ export declare class LoadModel3DFileNode extends BaseNode {
21
+ static readonly nodeType = "nodetool.model3d.LoadModel3DFile";
22
+ static readonly title = "Load Model 3D File";
23
+ static readonly description = "Load a 3D model file from disk.\n 3d, mesh, model, input, load, file, obj, glb, stl, ply\n\n Use cases:\n - Load 3D models for processing\n - Import meshes from CAD software\n - Read 3D assets for a workflow";
24
+ static readonly metadataOutputTypes: {
25
+ output: string;
26
+ };
27
+ static readonly inlineFields: string[];
28
+ static readonly inputFields: never[];
29
+ path: string;
30
+ process(): Promise<LoadModel3DFileNodeOutputs>;
31
+ }
32
+ /** Output handles SaveModel3DFileNode.process() emits. */
33
+ type SaveModel3DFileNodeOutputs = {
34
+ output: {
35
+ type: string;
36
+ asset_id: null;
37
+ metadata: null;
38
+ data: string;
39
+ };
40
+ };
41
+ export declare class SaveModel3DFileNode extends BaseNode {
42
+ static readonly nodeType = "nodetool.model3d.SaveModel3DFile";
43
+ static readonly title = "Save Model 3D File";
44
+ static readonly description = "Save a 3D model to disk.\n 3d, mesh, model, output, save, file, export\n\n Use cases:\n - Save processed 3D models\n - Export meshes to different formats\n - Archive 3D model results";
45
+ static readonly metadataOutputTypes: {
46
+ output: string;
47
+ };
48
+ static readonly inlineFields: string[];
49
+ static readonly inputFields: string[];
50
+ model: Model3DRefLike;
51
+ save_to_workspace: boolean;
52
+ folder: string;
53
+ filename: string;
54
+ overwrite: boolean;
55
+ process(context?: ProcessingContext): Promise<SaveModel3DFileNodeOutputs>;
56
+ }
57
+ /** Output handles SaveModel3DNode.process() emits. */
58
+ type SaveModel3DNodeOutputs = {
59
+ output: {
60
+ type: string;
61
+ asset_id: null;
62
+ metadata: null;
63
+ data: string;
64
+ };
65
+ };
66
+ export declare class SaveModel3DNode extends BaseNode {
67
+ static readonly nodeType = "nodetool.model3d.SaveModel3D";
68
+ static readonly title = "Save Model3D Asset";
69
+ static readonly description = "Save a 3D model to an asset folder with customizable name format.\n save, 3d, mesh, model, folder, naming, asset\n\n Use cases:\n - Save generated 3D models with timestamps\n - Organize outputs into specific folders\n - Create backups of processed models";
70
+ static readonly metadataOutputTypes: {
71
+ output: string;
72
+ };
73
+ static readonly inlineFields: string[];
74
+ static readonly inputFields: string[];
75
+ model: Model3DRefLike;
76
+ folder: FolderRefLike;
77
+ name: string;
78
+ process(context?: ProcessingContext): Promise<SaveModel3DNodeOutputs>;
79
+ }
80
+ export {};
81
+ //# sourceMappingURL=io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../../src/nodes/model3d/io.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAQ,MAAM,uBAAuB,CAAC;AAIvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAmB9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;GAGG;AACH,KAAK,aAAa,GAAG,MAAM,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC;AAEtD,0DAA0D;AAC1D,KAAK,0BAA0B,GAAG;IAChC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACxE,CAAC;AAEF,qBAAa,mBAAoB,SAAQ,QAAQ;IAC/C,MAAM,CAAC,QAAQ,CAAC,QAAQ,sCAAsC;IAC9D,MAAM,CAAC,QAAQ,CAAC,KAAK,wBAAwB;IAC7C,MAAM,CAAC,QAAQ,CAAC,WAAW,oOACwM;IACnO,MAAM,CAAC,QAAQ,CAAC,mBAAmB;QACjC,MAAM;MACN;IACF,MAAM,CAAC,QAAQ,CAAC,YAAY,WAAY;IACxC,MAAM,CAAC,QAAQ,CAAC,WAAW,UAAM;IAQzB,IAAI,EAAE,MAAM,CAAC;IAEf,OAAO,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAMnD;CACF;AAED,0DAA0D;AAC1D,KAAK,0BAA0B,GAAG;IAChC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACxE,CAAC;AAEF,qBAAa,mBAAoB,SAAQ,QAAQ;IAC/C,MAAM,CAAC,QAAQ,CAAC,QAAQ,sCAAsC;IAC9D,MAAM,CAAC,QAAQ,CAAC,KAAK,wBAAwB;IAC7C,MAAM,CAAC,QAAQ,CAAC,WAAW,2MAC+K;IAC1M,MAAM,CAAC,QAAQ,CAAC,mBAAmB;QACjC,MAAM;MACN;IACF,MAAM,CAAC,QAAQ,CAAC,YAAY,WAAqC;IACjE,MAAM,CAAC,QAAQ,CAAC,WAAW,WAAa;IAQhC,KAAK,EAAE,cAAc,CAAC;IAQtB,iBAAiB,EAAE,OAAO,CAAC;IAS3B,MAAM,EAAE,MAAM,CAAC;IASf,QAAQ,EAAE,MAAM,CAAC;IASjB,SAAS,EAAE,OAAO,CAAC;IAErB,OAAO,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAsB9E;CACF;AAED,sDAAsD;AACtD,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACxE,CAAC;AAEF,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,MAAM,CAAC,QAAQ,CAAC,QAAQ,kCAAkC;IAC1D,MAAM,CAAC,QAAQ,CAAC,KAAK,wBAAwB;IAC7C,MAAM,CAAC,QAAQ,CAAC,WAAW,mRACuP;IAClR,MAAM,CAAC,QAAQ,CAAC,mBAAmB;QACjC,MAAM;MACN;IACF,MAAM,CAAC,QAAQ,CAAC,YAAY,WAAY;IACxC,MAAM,CAAC,QAAQ,CAAC,WAAW,WAAa;IAQhC,KAAK,EAAE,cAAc,CAAC;IAQtB,MAAM,EAAE,aAAa,CAAC;IAStB,IAAI,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAe1E;CACF"}
@@ -0,0 +1,162 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { BaseNode, prop } from "@nodetool-ai/node-sdk";
8
+ import { promises as fs } from "node:fs";
9
+ import path from "node:path";
10
+ import { pathToFileURL } from "node:url";
11
+ import { DEFAULT_FOLDER, DEFAULT_MODEL_3D } from "./defaults.js";
12
+ import { dateName, extFormat, filePath, modelFormat, modelRef, modelRefToBytes } from "./utils.js";
13
+ import { folderPathOf, saveFilename, writeSavedFile, VISIBLE_WHEN_NOT_SAVING_TO_WORKSPACE, SAVE_TO_WORKSPACE_DESCRIPTION, SAVE_TO_WORKSPACE_TITLE } from "@nodetool-ai/nodes-utils";
14
+ export class LoadModel3DFileNode extends BaseNode {
15
+ static nodeType = "nodetool.model3d.LoadModel3DFile";
16
+ static title = "Load Model 3D File";
17
+ static description = "Load a 3D model file from disk.\n 3d, mesh, model, input, load, file, obj, glb, stl, ply\n\n Use cases:\n - Load 3D models for processing\n - Import meshes from CAD software\n - Read 3D assets for a workflow";
18
+ static metadataOutputTypes = {
19
+ output: "model_3d"
20
+ };
21
+ static inlineFields = ["path"];
22
+ static inputFields = [];
23
+ async process() {
24
+ const p = filePath(this.path);
25
+ const data = new Uint8Array(await fs.readFile(p));
26
+ return {
27
+ output: modelRef(data, { uri: pathToFileURL(p).toString(), format: extFormat(p) })
28
+ };
29
+ }
30
+ }
31
+ __decorate([
32
+ prop({
33
+ type: "str",
34
+ default: "",
35
+ title: "Path",
36
+ description: "Path to the 3D model file to read"
37
+ })
38
+ ], LoadModel3DFileNode.prototype, "path", void 0);
39
+ export class SaveModel3DFileNode extends BaseNode {
40
+ static nodeType = "nodetool.model3d.SaveModel3DFile";
41
+ static title = "Save Model 3D File";
42
+ static description = "Save a 3D model to disk.\n 3d, mesh, model, output, save, file, export\n\n Use cases:\n - Save processed 3D models\n - Export meshes to different formats\n - Archive 3D model results";
43
+ static metadataOutputTypes = {
44
+ output: "model_3d"
45
+ };
46
+ static inlineFields = ["save_to_workspace", "filename"];
47
+ static inputFields = ["model"];
48
+ async process(context) {
49
+ const bytes = await modelRefToBytes(this.model, context);
50
+ const targetPath = await writeSavedFile({
51
+ folder: this.folder,
52
+ filename: saveFilename({
53
+ filename: dateName(this.filename),
54
+ fallback: dateName("model_%Y-%m-%d_%H-%M-%S"),
55
+ extension: `.${modelFormat(this.model)}`
56
+ }),
57
+ saveToWorkspace: this.save_to_workspace,
58
+ workspace: context?.workspace,
59
+ workspaceDir: context?.workspaceDir,
60
+ overwrite: this.overwrite,
61
+ bytes
62
+ });
63
+ return {
64
+ output: modelRef(bytes, {
65
+ uri: pathToFileURL(targetPath).toString(),
66
+ format: extFormat(targetPath)
67
+ })
68
+ };
69
+ }
70
+ }
71
+ __decorate([
72
+ prop({
73
+ type: "model_3d",
74
+ default: DEFAULT_MODEL_3D,
75
+ title: "Model",
76
+ description: "The 3D model to save"
77
+ })
78
+ ], SaveModel3DFileNode.prototype, "model", void 0);
79
+ __decorate([
80
+ prop({
81
+ type: "bool",
82
+ default: true,
83
+ title: SAVE_TO_WORKSPACE_TITLE,
84
+ description: SAVE_TO_WORKSPACE_DESCRIPTION
85
+ })
86
+ ], SaveModel3DFileNode.prototype, "save_to_workspace", void 0);
87
+ __decorate([
88
+ prop({
89
+ type: "str",
90
+ default: "",
91
+ title: "Folder",
92
+ description: "Folder where the file will be saved",
93
+ json_schema_extra: VISIBLE_WHEN_NOT_SAVING_TO_WORKSPACE
94
+ })
95
+ ], SaveModel3DFileNode.prototype, "folder", void 0);
96
+ __decorate([
97
+ prop({
98
+ type: "str",
99
+ default: "",
100
+ title: "Filename",
101
+ description: "\n The name of the 3D model file.\n You can use time and date variables to create unique names:\n %Y - Year\n %m - Month\n %d - Day\n %H - Hour\n %M - Minute\n %S - Second\n "
102
+ })
103
+ ], SaveModel3DFileNode.prototype, "filename", void 0);
104
+ __decorate([
105
+ prop({
106
+ type: "bool",
107
+ default: false,
108
+ title: "Overwrite",
109
+ description: "Overwrite the file if it already exists, otherwise file will be renamed"
110
+ })
111
+ ], SaveModel3DFileNode.prototype, "overwrite", void 0);
112
+ export class SaveModel3DNode extends BaseNode {
113
+ static nodeType = "nodetool.model3d.SaveModel3D";
114
+ static title = "Save Model3D Asset";
115
+ static description = "Save a 3D model to an asset folder with customizable name format.\n save, 3d, mesh, model, folder, naming, asset\n\n Use cases:\n - Save generated 3D models with timestamps\n - Organize outputs into specific folders\n - Create backups of processed models";
116
+ static metadataOutputTypes = {
117
+ output: "model_3d"
118
+ };
119
+ static inlineFields = ["name"];
120
+ static inputFields = ["model"];
121
+ async process(context) {
122
+ // folderPathOf, not String(): `folder` carries a folder ref object, and
123
+ // stringifying it wrote every model into a directory named "[object Object]".
124
+ const folder = folderPathOf(this.folder);
125
+ const name = dateName(this.name);
126
+ const full = path.resolve(folder, name);
127
+ await fs.mkdir(path.dirname(full), { recursive: true });
128
+ const bytes = await modelRefToBytes(this.model, context);
129
+ await fs.writeFile(full, bytes);
130
+ return {
131
+ output: modelRef(bytes, {
132
+ uri: pathToFileURL(full).toString(),
133
+ format: extFormat(full)
134
+ })
135
+ };
136
+ }
137
+ }
138
+ __decorate([
139
+ prop({
140
+ type: "model_3d",
141
+ default: DEFAULT_MODEL_3D,
142
+ title: "Model",
143
+ description: "The 3D model to save."
144
+ })
145
+ ], SaveModel3DNode.prototype, "model", void 0);
146
+ __decorate([
147
+ prop({
148
+ type: "folder",
149
+ default: DEFAULT_FOLDER,
150
+ title: "Folder",
151
+ description: "The asset folder to save the 3D model in."
152
+ })
153
+ ], SaveModel3DNode.prototype, "folder", void 0);
154
+ __decorate([
155
+ prop({
156
+ type: "str",
157
+ default: "%Y-%m-%d_%H-%M-%S.glb",
158
+ title: "Name",
159
+ description: "\n Name of the output file.\n You can use time and date variables to create unique names:\n %Y - Year\n %m - Month\n %d - Day\n %H - Hour\n %M - Minute\n %S - Second\n "
160
+ })
161
+ ], SaveModel3DNode.prototype, "name", void 0);
162
+ //# sourceMappingURL=io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.js","sourceRoot":"","sources":["../../../src/nodes/model3d/io.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ export type TransformGlbOptions = {
2
+ translateX: number;
3
+ translateY: number;
4
+ translateZ: number;
5
+ rotateXDeg: number;
6
+ rotateYDeg: number;
7
+ rotateZDeg: number;
8
+ scaleX: number;
9
+ scaleY: number;
10
+ scaleZ: number;
11
+ uniformScale: number;
12
+ };
13
+ export type RecalculateNormalsOptions = {
14
+ mode: string;
15
+ fixWinding: boolean;
16
+ };
17
+ export type CenterGlbOptions = {
18
+ useCentroid: boolean;
19
+ };
20
+ export type NormalizeGlbOptions = {
21
+ centerMode: "bounds" | "centroid" | "none";
22
+ axisPreset: "keep" | "z_to_y" | "y_to_z";
23
+ scaleToSize: boolean;
24
+ targetSize: number;
25
+ placeOnGround: boolean;
26
+ groundAxis: "y" | "z";
27
+ };
28
+ export type RepairGlbOptions = {
29
+ mergeDuplicateVertices: boolean;
30
+ removeDegenerateFaces: boolean;
31
+ positionTolerance: number;
32
+ };
33
+ export declare function transformGlb(bytes: Uint8Array, options: TransformGlbOptions): Uint8Array | null;
34
+ export declare function recalculateNormalsGlb(bytes: Uint8Array, options: RecalculateNormalsOptions): Uint8Array | null;
35
+ export declare function centerGlb(bytes: Uint8Array, options: CenterGlbOptions): Uint8Array | null;
36
+ export declare function flipNormalsGlb(bytes: Uint8Array): Uint8Array | null;
37
+ export declare function normalizeGlb(bytes: Uint8Array, options: NormalizeGlbOptions): Uint8Array | null;
38
+ export declare function extractLargestComponentGlb(bytes: Uint8Array): Uint8Array | null;
39
+ export declare function repairGlb(bytes: Uint8Array, options: RepairGlbOptions): Uint8Array | null;
40
+ //# sourceMappingURL=mesh-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesh-ops.d.ts","sourceRoot":"","sources":["../../../src/nodes/model3d/mesh-ops.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IAC3C,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,GAAG,GAAG,GAAG,CAAC;CACvB,CAAC;AAOF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,sBAAsB,EAAE,OAAO,CAAC;IAChC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAoVF,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,mBAAmB,GAC3B,UAAU,GAAG,IAAI,CA+DnB;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,yBAAyB,GACjC,UAAU,GAAG,IAAI,CA0HnB;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,gBAAgB,GACxB,UAAU,GAAG,IAAI,CA0EnB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAqCnE;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,mBAAmB,GAC3B,UAAU,GAAG,IAAI,CAoHnB;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAgG/E;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,gBAAgB,GACxB,UAAU,GAAG,IAAI,CA6BnB"}