Aves: как раз наоборот - нужно все файлы в проекте, включая папку node_modules слепить в один файл и сжать. Про шифрование не уверен, как раз из-за динамического включения модулей и сериализации объектов, тормозить скрипт лишними расшифровками в реалтайме тоже не хочется. Но в идеале чем больше шифра без накладных расходов, тем лучше.
Dark Hole: вы работали с node.js? Там система модулей: нельзя просто так взять и слепить все файлы в один - так они будут пытаться вызывать несуществующие модули. Нужна умная замена require и module.exports
Dark Hole: спасибо, но до этого я бы и сам додумался)
Я говорю о сжатии node.js - это не тоже самое, что браузерный js и пока что готовое решение не нашёл.
Пробуй отладкой ловить ошибки работы с файловой системой, могут быть разные причины: файл не найден, не хватает прав доступа, ошибка парсинга json и т.п.
Dark Hole: прокси - это механизм реализации сеттеров, прошу не придираться к словам. В es6 лучшая практика - делать по возможности все геттеры и сеттеры через прокси.
Мне кажется, это не совсем то что нужно. В вопросе конечно приводился пример с одним уровнем вложенности, но такой класс не будет работать в виде json.get('key').altKey = 'value';
Лучшее решение - написать рекурсивное присвоение прочитанного json-а и каждому свойству выставить сеттер с вызовом метода сохранения.
Станислав Макаров: спасибо, хоть и не сразу но разобрался. Проблема оказалась в использовании sinopia - она отказывается выдавать @types. Может знаете, как исправить?
По поводу пункта 2: зачем делать лишнюю копию, когда она занимает лишнее место и при изменении оригинала остаётся неизменной (или вызывает расходы на поиск и обработку копий)
ORM - вы правы, не тот термин подобрал. Я имел ввиду mongoose для node.js и т.п. решения, упрощающие работу с объектами.