Coding conventions, self-initializing class patterns, method chaining, and file structure rules across STRVCT.
STRVCT follows smalltalk-inspired JavaScript coding conventions to ensure codebase consistency, high-signal readability, and predictable framework behavior.
Classes are wrapped in IIFE closures and self-register using .initThisClass() (or .initThisCategory() for categories):
(class Character extends SvStorableNode {
initPrototypeSlots () {
{
const slot = this.newSlot("name", "");
slot.setSlotType("String");
slot.setShouldStoreSlot(true);
slot.setSyncsToView(true);
}
}
initPrototype () {
this.setTitle("Character");
this.setShouldStore(true);
}
init () {
super.init();
// Basic instance setup
}
finalInit () {
super.finalInit();
// Post-deserialization relationship wiring
}
}.initThisClass());SvNode, SvStackView, SvPersistentObjectPool).SvJsonGroup_patches.js, Array_promises.js).Protocol (SvAudioClipProtocol, SvDragSourceProtocol).node.name()); setter prepends set (node.setName("Thorin")).is, has, should, or can (node.isSubnode(), slot.shouldStoreSlot(), view.canInspect()).All configuration setters on views and slots return this to allow clean method chaining:
const view = SvDomView.clone()
.setPosition("absolute")
.setTop("0px")
.setLeft("0px")
.setWidth("100%")
.setHeight("100%")
.setBackgroundColor("#111");Every folder specifies its resource list and subfolder dependencies in _imports.json. Base class files must precede category extensions or subclass files:
[
"_css.css",
"SvNode.js",
"SvNode_subnodes.js",
"SvStorableNode.js"
]