@theotherwillembotha/node-red-cluster 0.4.4 → 0.4.5
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.
- package/build/Nodes.js +179 -110
- package/build/Plugins.js +179 -110
- package/package.json +2 -2
package/build/Nodes.js
CHANGED
|
@@ -8877,102 +8877,6 @@ var require_MetricsTemplate = __commonJS({
|
|
|
8877
8877
|
}
|
|
8878
8878
|
});
|
|
8879
8879
|
|
|
8880
|
-
// ../nodered_plugincore/build/core/configfragment/service/ConfigFragmentService.js
|
|
8881
|
-
var require_ConfigFragmentService = __commonJS({
|
|
8882
|
-
"../nodered_plugincore/build/core/configfragment/service/ConfigFragmentService.js"(exports2) {
|
|
8883
|
-
"use strict";
|
|
8884
|
-
var __decorate = exports2 && exports2.__decorate || function(decorators, target, key, desc) {
|
|
8885
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
8886
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
8887
|
-
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;
|
|
8888
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
8889
|
-
};
|
|
8890
|
-
var __metadata = exports2 && exports2.__metadata || function(k, v) {
|
|
8891
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
8892
|
-
};
|
|
8893
|
-
var ConfigFragmentService_1;
|
|
8894
|
-
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
8895
|
-
exports2.ConfigFragmentService = void 0;
|
|
8896
|
-
var NodeConstructor_1 = require_NodeConstructor();
|
|
8897
|
-
var ServiceDescriptionDecorator_1 = require_ServiceDescriptionDecorator();
|
|
8898
|
-
var ConfigFragmentService = ConfigFragmentService_1 = class ConfigFragmentService extends NodeConstructor_1.BaseService {
|
|
8899
|
-
// Global-backed registry so fragments registered across bundle boundaries are visible.
|
|
8900
|
-
static get _fragments() {
|
|
8901
|
-
if (!global.__plugincore_config_fragments__) {
|
|
8902
|
-
global.__plugincore_config_fragments__ = [];
|
|
8903
|
-
}
|
|
8904
|
-
return global.__plugincore_config_fragments__;
|
|
8905
|
-
}
|
|
8906
|
-
constructor() {
|
|
8907
|
-
super("configfragments");
|
|
8908
|
-
}
|
|
8909
|
-
init(red) {
|
|
8910
|
-
red.httpAdmin.get("/configfragment/:section/:providerType", red.auth.needsPermission("inject.write"), (request, response) => {
|
|
8911
|
-
const { section, providerType } = request.params;
|
|
8912
|
-
const fragment = ConfigFragmentService_1._fragments.find((f) => f.section === section && f.providerType === providerType);
|
|
8913
|
-
if (fragment) {
|
|
8914
|
-
response.type("text/html").send(fragment.html);
|
|
8915
|
-
} else {
|
|
8916
|
-
response.status(404).send("");
|
|
8917
|
-
}
|
|
8918
|
-
});
|
|
8919
|
-
return Promise.resolve();
|
|
8920
|
-
}
|
|
8921
|
-
deinit(red) {
|
|
8922
|
-
return Promise.resolve();
|
|
8923
|
-
}
|
|
8924
|
-
/**
|
|
8925
|
-
* Register a config fragment. Called by provider plugins during their service init().
|
|
8926
|
-
* Provider plugins own both sides of the contract: the HTML fragment that collects
|
|
8927
|
-
* the configuration AND the server-side factory that deserializes it.
|
|
8928
|
-
*/
|
|
8929
|
-
static registerFragment(registration) {
|
|
8930
|
-
const existing = ConfigFragmentService_1._fragments.find((f) => f.section === registration.section && f.providerType === registration.providerType);
|
|
8931
|
-
if (!existing) {
|
|
8932
|
-
ConfigFragmentService_1._fragments.push(registration);
|
|
8933
|
-
}
|
|
8934
|
-
}
|
|
8935
|
-
};
|
|
8936
|
-
exports2.ConfigFragmentService = ConfigFragmentService;
|
|
8937
|
-
exports2.ConfigFragmentService = ConfigFragmentService = ConfigFragmentService_1 = __decorate([
|
|
8938
|
-
(0, ServiceDescriptionDecorator_1.ServiceDescription)({
|
|
8939
|
-
id: "@theotherwillembotha/configfragmentservice",
|
|
8940
|
-
sourceFile: "@theotherwillembotha/node-red-plugincore"
|
|
8941
|
-
}),
|
|
8942
|
-
__metadata("design:paramtypes", [])
|
|
8943
|
-
], ConfigFragmentService);
|
|
8944
|
-
}
|
|
8945
|
-
});
|
|
8946
|
-
|
|
8947
|
-
// ../nodered_plugincore/build/core/configfragment/template/ConfigFragmentTemplate.js
|
|
8948
|
-
var require_ConfigFragmentTemplate = __commonJS({
|
|
8949
|
-
"../nodered_plugincore/build/core/configfragment/template/ConfigFragmentTemplate.js"(exports2) {
|
|
8950
|
-
"use strict";
|
|
8951
|
-
var __decorate = exports2 && exports2.__decorate || function(decorators, target, key, desc) {
|
|
8952
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
8953
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
8954
|
-
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;
|
|
8955
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
8956
|
-
};
|
|
8957
|
-
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
8958
|
-
exports2.ConfigFragmentTemplate = void 0;
|
|
8959
|
-
var NodeGenerator_1 = require_NodeGenerator();
|
|
8960
|
-
var NodeConstructor_1 = require_NodeConstructor();
|
|
8961
|
-
var TemplateDescriptionDecorator_1 = require_TemplateDescriptionDecorator();
|
|
8962
|
-
var ConfigFragmentService_1 = require_ConfigFragmentService();
|
|
8963
|
-
var ConfigFragmentTemplate = class ConfigFragmentTemplate extends NodeConstructor_1.Template {
|
|
8964
|
-
};
|
|
8965
|
-
exports2.ConfigFragmentTemplate = ConfigFragmentTemplate;
|
|
8966
|
-
exports2.ConfigFragmentTemplate = ConfigFragmentTemplate = __decorate([
|
|
8967
|
-
(0, TemplateDescriptionDecorator_1.TemplateDescription)({
|
|
8968
|
-
name: "configfragment",
|
|
8969
|
-
templateFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "ConfigFragmentTemplate.html",
|
|
8970
|
-
dependencies: [ConfigFragmentService_1.ConfigFragmentService]
|
|
8971
|
-
})
|
|
8972
|
-
], ConfigFragmentTemplate);
|
|
8973
|
-
}
|
|
8974
|
-
});
|
|
8975
|
-
|
|
8976
8880
|
// ../nodered_plugincore/build/core/metrics/template/CounterMetricTemplate.js
|
|
8977
8881
|
var require_CounterMetricTemplate = __commonJS({
|
|
8978
8882
|
"../nodered_plugincore/build/core/metrics/template/CounterMetricTemplate.js"(exports2) {
|
|
@@ -8991,7 +8895,6 @@ var require_CounterMetricTemplate = __commonJS({
|
|
|
8991
8895
|
var BasicTemplate_1 = require_BasicTemplate();
|
|
8992
8896
|
var MetricsService_1 = require_MetricsService();
|
|
8993
8897
|
var DelegatedConfigReferenceNode_1 = require_DelegatedConfigReferenceNode();
|
|
8994
|
-
var ConfigFragmentTemplate_1 = require_ConfigFragmentTemplate();
|
|
8995
8898
|
var CounterMetricTemplate = class CounterMetricTemplate extends NodeConstructor_1.Template {
|
|
8996
8899
|
};
|
|
8997
8900
|
exports2.CounterMetricTemplate = CounterMetricTemplate;
|
|
@@ -8999,7 +8902,7 @@ var require_CounterMetricTemplate = __commonJS({
|
|
|
8999
8902
|
(0, TemplateDescriptionDecorator_1.TemplateDescription)({
|
|
9000
8903
|
name: "countermetric",
|
|
9001
8904
|
templateFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "CounterMetricTemplate.html",
|
|
9002
|
-
dependencies: [BasicTemplate_1.BasicTemplate, DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, MetricsService_1.MetricsService
|
|
8905
|
+
dependencies: [BasicTemplate_1.BasicTemplate, DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, MetricsService_1.MetricsService]
|
|
9003
8906
|
})
|
|
9004
8907
|
], CounterMetricTemplate);
|
|
9005
8908
|
}
|
|
@@ -9023,7 +8926,6 @@ var require_GaugeMetricTemplate = __commonJS({
|
|
|
9023
8926
|
var BasicTemplate_1 = require_BasicTemplate();
|
|
9024
8927
|
var MetricsService_1 = require_MetricsService();
|
|
9025
8928
|
var DelegatedConfigReferenceNode_1 = require_DelegatedConfigReferenceNode();
|
|
9026
|
-
var ConfigFragmentTemplate_1 = require_ConfigFragmentTemplate();
|
|
9027
8929
|
var GaugeMetricTemplate = class GaugeMetricTemplate extends NodeConstructor_1.Template {
|
|
9028
8930
|
};
|
|
9029
8931
|
exports2.GaugeMetricTemplate = GaugeMetricTemplate;
|
|
@@ -9031,7 +8933,7 @@ var require_GaugeMetricTemplate = __commonJS({
|
|
|
9031
8933
|
(0, TemplateDescriptionDecorator_1.TemplateDescription)({
|
|
9032
8934
|
name: "gaugemetric",
|
|
9033
8935
|
templateFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "GaugeMetricTemplate.html",
|
|
9034
|
-
dependencies: [BasicTemplate_1.BasicTemplate, DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, MetricsService_1.MetricsService
|
|
8936
|
+
dependencies: [BasicTemplate_1.BasicTemplate, DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, MetricsService_1.MetricsService]
|
|
9035
8937
|
})
|
|
9036
8938
|
], GaugeMetricTemplate);
|
|
9037
8939
|
}
|
|
@@ -9076,7 +8978,6 @@ var require_TimerMetricTemplate = __commonJS({
|
|
|
9076
8978
|
var BasicTemplate_1 = require_BasicTemplate();
|
|
9077
8979
|
var MetricsService_1 = require_MetricsService();
|
|
9078
8980
|
var DelegatedConfigReferenceNode_1 = require_DelegatedConfigReferenceNode();
|
|
9079
|
-
var ConfigFragmentTemplate_1 = require_ConfigFragmentTemplate();
|
|
9080
8981
|
var TimerMetricTemplate = class TimerMetricTemplate extends NodeConstructor_1.Template {
|
|
9081
8982
|
};
|
|
9082
8983
|
exports2.TimerMetricTemplate = TimerMetricTemplate;
|
|
@@ -9084,7 +8985,7 @@ var require_TimerMetricTemplate = __commonJS({
|
|
|
9084
8985
|
(0, TemplateDescriptionDecorator_1.TemplateDescription)({
|
|
9085
8986
|
name: "timermetric",
|
|
9086
8987
|
templateFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "TimerMetricTemplate.html",
|
|
9087
|
-
dependencies: [BasicTemplate_1.BasicTemplate, DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, MetricsService_1.MetricsService
|
|
8988
|
+
dependencies: [BasicTemplate_1.BasicTemplate, DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, MetricsService_1.MetricsService]
|
|
9088
8989
|
})
|
|
9089
8990
|
], TimerMetricTemplate);
|
|
9090
8991
|
}
|
|
@@ -9162,8 +9063,10 @@ var require_StateService = __commonJS({
|
|
|
9162
9063
|
var _GLOBAL_STATE_MEMORY_KEY = "__plugincore_internalstate_memory__";
|
|
9163
9064
|
var _GLOBAL_STATE_SUBS_KEY = "__plugincore_internalstate_subscribers__";
|
|
9164
9065
|
var _GLOBAL_STATE_FACTORIES_KEY = "__plugincore_state_factories__";
|
|
9066
|
+
var _GLOBAL_STATE_TYPE_FACTORIES_KEY = "__plugincore_state_type_factories__";
|
|
9165
9067
|
var _GLOBAL_STATE_CONFIG_KEY = "__plugincore_state_config__";
|
|
9166
9068
|
var _GLOBAL_STATE_USERDIR_KEY = "__plugincore_state_userDir__";
|
|
9069
|
+
var _GLOBAL_STATE_RED_KEY = "__plugincore_state_red__";
|
|
9167
9070
|
function getMemoryStore() {
|
|
9168
9071
|
if (!global[_GLOBAL_STATE_MEMORY_KEY])
|
|
9169
9072
|
global[_GLOBAL_STATE_MEMORY_KEY] = /* @__PURE__ */ new Map();
|
|
@@ -9179,6 +9082,11 @@ var require_StateService = __commonJS({
|
|
|
9179
9082
|
global[_GLOBAL_STATE_FACTORIES_KEY] = /* @__PURE__ */ new Map();
|
|
9180
9083
|
return global[_GLOBAL_STATE_FACTORIES_KEY];
|
|
9181
9084
|
}
|
|
9085
|
+
function getTypeFactoryStore() {
|
|
9086
|
+
if (!global[_GLOBAL_STATE_TYPE_FACTORIES_KEY])
|
|
9087
|
+
global[_GLOBAL_STATE_TYPE_FACTORIES_KEY] = /* @__PURE__ */ new Map();
|
|
9088
|
+
return global[_GLOBAL_STATE_TYPE_FACTORIES_KEY];
|
|
9089
|
+
}
|
|
9182
9090
|
function getConfigStore() {
|
|
9183
9091
|
if (!global[_GLOBAL_STATE_CONFIG_KEY])
|
|
9184
9092
|
global[_GLOBAL_STATE_CONFIG_KEY] = /* @__PURE__ */ new Map();
|
|
@@ -9199,6 +9107,7 @@ var require_StateService = __commonJS({
|
|
|
9199
9107
|
}
|
|
9200
9108
|
init(red) {
|
|
9201
9109
|
global[_GLOBAL_STATE_USERDIR_KEY] = red.settings.userDir;
|
|
9110
|
+
global[_GLOBAL_STATE_RED_KEY] = red;
|
|
9202
9111
|
}
|
|
9203
9112
|
deinit(_red) {
|
|
9204
9113
|
}
|
|
@@ -9228,6 +9137,10 @@ var require_StateService = __commonJS({
|
|
|
9228
9137
|
static registerConfig(nodeId, config) {
|
|
9229
9138
|
getConfigStore().set(nodeId, config);
|
|
9230
9139
|
}
|
|
9140
|
+
// ---- Type-based factory registration (called by provider modules at load time) ----
|
|
9141
|
+
static registerTypeFactory(typeName, factory) {
|
|
9142
|
+
getTypeFactoryStore().set(typeName, factory);
|
|
9143
|
+
}
|
|
9231
9144
|
// ---- Handle creation (called by consumer nodes) ----
|
|
9232
9145
|
static createHandle(stateReference) {
|
|
9233
9146
|
if (!stateReference)
|
|
@@ -9235,6 +9148,19 @@ var require_StateService = __commonJS({
|
|
|
9235
9148
|
const factory = getFactoryStore().get(stateReference);
|
|
9236
9149
|
return factory ? factory() : new DoNothingStateHandle();
|
|
9237
9150
|
}
|
|
9151
|
+
static createHandleFromRef(stateReference, providerConfig, ownerId) {
|
|
9152
|
+
if (!stateReference)
|
|
9153
|
+
return new DoNothingStateHandle();
|
|
9154
|
+
const red = global[_GLOBAL_STATE_RED_KEY];
|
|
9155
|
+
if (!red)
|
|
9156
|
+
return new DoNothingStateHandle();
|
|
9157
|
+
const providerNode = red.nodes.getNode(stateReference);
|
|
9158
|
+
if (!providerNode)
|
|
9159
|
+
return new DoNothingStateHandle();
|
|
9160
|
+
const providerType = providerNode.type;
|
|
9161
|
+
const factory = getTypeFactoryStore().get(providerType);
|
|
9162
|
+
return factory ? factory(ownerId, providerConfig || {}, stateReference) : new DoNothingStateHandle();
|
|
9163
|
+
}
|
|
9238
9164
|
// ---- Memory store (used by InternalStateHandle) ----
|
|
9239
9165
|
static getMemory(nodeId) {
|
|
9240
9166
|
return getMemoryStore().get(nodeId) ?? null;
|
|
@@ -9315,6 +9241,73 @@ var require_StateConfigNode = __commonJS({
|
|
|
9315
9241
|
}
|
|
9316
9242
|
});
|
|
9317
9243
|
|
|
9244
|
+
// ../nodered_plugincore/build/core/configfragment/service/ConfigFragmentService.js
|
|
9245
|
+
var require_ConfigFragmentService = __commonJS({
|
|
9246
|
+
"../nodered_plugincore/build/core/configfragment/service/ConfigFragmentService.js"(exports2) {
|
|
9247
|
+
"use strict";
|
|
9248
|
+
var __decorate = exports2 && exports2.__decorate || function(decorators, target, key, desc) {
|
|
9249
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
9250
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
9251
|
+
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;
|
|
9252
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
9253
|
+
};
|
|
9254
|
+
var __metadata = exports2 && exports2.__metadata || function(k, v) {
|
|
9255
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9256
|
+
};
|
|
9257
|
+
var ConfigFragmentService_1;
|
|
9258
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
9259
|
+
exports2.ConfigFragmentService = void 0;
|
|
9260
|
+
var NodeConstructor_1 = require_NodeConstructor();
|
|
9261
|
+
var ServiceDescriptionDecorator_1 = require_ServiceDescriptionDecorator();
|
|
9262
|
+
var ConfigFragmentService = ConfigFragmentService_1 = class ConfigFragmentService extends NodeConstructor_1.BaseService {
|
|
9263
|
+
// Global-backed registry so fragments registered across bundle boundaries are visible.
|
|
9264
|
+
static get _fragments() {
|
|
9265
|
+
if (!global.__plugincore_config_fragments__) {
|
|
9266
|
+
global.__plugincore_config_fragments__ = [];
|
|
9267
|
+
}
|
|
9268
|
+
return global.__plugincore_config_fragments__;
|
|
9269
|
+
}
|
|
9270
|
+
constructor() {
|
|
9271
|
+
super("configfragments");
|
|
9272
|
+
}
|
|
9273
|
+
init(red) {
|
|
9274
|
+
red.httpAdmin.get("/configfragment/:section/:providerType", red.auth.needsPermission("inject.write"), (request, response) => {
|
|
9275
|
+
const { section, providerType } = request.params;
|
|
9276
|
+
const fragment = ConfigFragmentService_1._fragments.find((f) => f.section === section && f.providerType === providerType);
|
|
9277
|
+
if (fragment) {
|
|
9278
|
+
response.type("text/html").send(fragment.html);
|
|
9279
|
+
} else {
|
|
9280
|
+
response.status(404).send("");
|
|
9281
|
+
}
|
|
9282
|
+
});
|
|
9283
|
+
return Promise.resolve();
|
|
9284
|
+
}
|
|
9285
|
+
deinit(red) {
|
|
9286
|
+
return Promise.resolve();
|
|
9287
|
+
}
|
|
9288
|
+
/**
|
|
9289
|
+
* Register a config fragment. Called by provider plugins during their service init().
|
|
9290
|
+
* Provider plugins own both sides of the contract: the HTML fragment that collects
|
|
9291
|
+
* the configuration AND the server-side factory that deserializes it.
|
|
9292
|
+
*/
|
|
9293
|
+
static registerFragment(registration) {
|
|
9294
|
+
const existing = ConfigFragmentService_1._fragments.find((f) => f.section === registration.section && f.providerType === registration.providerType);
|
|
9295
|
+
if (!existing) {
|
|
9296
|
+
ConfigFragmentService_1._fragments.push(registration);
|
|
9297
|
+
}
|
|
9298
|
+
}
|
|
9299
|
+
};
|
|
9300
|
+
exports2.ConfigFragmentService = ConfigFragmentService;
|
|
9301
|
+
exports2.ConfigFragmentService = ConfigFragmentService = ConfigFragmentService_1 = __decorate([
|
|
9302
|
+
(0, ServiceDescriptionDecorator_1.ServiceDescription)({
|
|
9303
|
+
id: "@theotherwillembotha/configfragmentservice",
|
|
9304
|
+
sourceFile: "@theotherwillembotha/node-red-plugincore"
|
|
9305
|
+
}),
|
|
9306
|
+
__metadata("design:paramtypes", [])
|
|
9307
|
+
], ConfigFragmentService);
|
|
9308
|
+
}
|
|
9309
|
+
});
|
|
9310
|
+
|
|
9318
9311
|
// ../nodered_plugincore/build/core/state/node/InternalStateConfigNode.js
|
|
9319
9312
|
var require_InternalStateConfigNode = __commonJS({
|
|
9320
9313
|
"../nodered_plugincore/build/core/state/node/InternalStateConfigNode.js"(exports2) {
|
|
@@ -9334,6 +9327,7 @@ var require_InternalStateConfigNode = __commonJS({
|
|
|
9334
9327
|
var NodeGenerator_1 = require_NodeGenerator();
|
|
9335
9328
|
var StateService_1 = require_StateService();
|
|
9336
9329
|
var StateConfigNode_1 = require_StateConfigNode();
|
|
9330
|
+
var ConfigFragmentService_1 = require_ConfigFragmentService();
|
|
9337
9331
|
var InternalStateHandle = class {
|
|
9338
9332
|
constructor(nodeId, survivesRedeploy, survivesRestart) {
|
|
9339
9333
|
this._callback = null;
|
|
@@ -9381,15 +9375,9 @@ var require_InternalStateConfigNode = __commonJS({
|
|
|
9381
9375
|
var InternalStateConfigNode = class InternalStateConfigNode extends StateConfigNode_1.StateConfigNode {
|
|
9382
9376
|
constructor(node, config) {
|
|
9383
9377
|
super(node, config);
|
|
9384
|
-
this._survivesRedeploy = config.survivesRedeploy ?? false;
|
|
9385
|
-
this._survivesRestart = config.survivesRestart ?? false;
|
|
9386
|
-
StateService_1.StateService.registerConfig(config.id, {
|
|
9387
|
-
survivesRedeploy: this._survivesRedeploy,
|
|
9388
|
-
survivesRestart: this._survivesRestart
|
|
9389
|
-
});
|
|
9390
9378
|
}
|
|
9391
9379
|
createHandle() {
|
|
9392
|
-
return new InternalStateHandle(this.id(),
|
|
9380
|
+
return new InternalStateHandle(this.id(), false, false);
|
|
9393
9381
|
}
|
|
9394
9382
|
};
|
|
9395
9383
|
exports2.InternalStateConfigNode = InternalStateConfigNode;
|
|
@@ -9405,6 +9393,57 @@ var require_InternalStateConfigNode = __commonJS({
|
|
|
9405
9393
|
}),
|
|
9406
9394
|
__metadata("design:paramtypes", [Object, Object])
|
|
9407
9395
|
], InternalStateConfigNode);
|
|
9396
|
+
StateService_1.StateService.registerTypeFactory("InternalStateConfigNode", (ownerId, config, _providerRef) => {
|
|
9397
|
+
const survivesRedeploy = config.survivesRedeploy ?? false;
|
|
9398
|
+
const survivesRestart = config.survivesRestart ?? false;
|
|
9399
|
+
StateService_1.StateService.registerConfig(ownerId, { survivesRedeploy, survivesRestart });
|
|
9400
|
+
return new InternalStateHandle(ownerId, survivesRedeploy, survivesRestart);
|
|
9401
|
+
});
|
|
9402
|
+
var INTERNAL_STATE_FRAGMENT_HTML = `
|
|
9403
|
+
<script type="application/json" fragment-section="metaData">
|
|
9404
|
+
{ "label": "Persistence" }
|
|
9405
|
+
</script>
|
|
9406
|
+
|
|
9407
|
+
<script type="text/html" fragment-section="onForm">
|
|
9408
|
+
<div class="form-row nomargin">
|
|
9409
|
+
<label class="towb_editorlabel"> </label>
|
|
9410
|
+
<input class="towb_checkbox" type="checkbox" id="fragment-survivesRedeploy" />
|
|
9411
|
+
<label class="towb_checkboxlabel" for="fragment-survivesRedeploy">Survives redeploy</label>
|
|
9412
|
+
</div>
|
|
9413
|
+
<div class="form-row nomargin">
|
|
9414
|
+
<label class="towb_editorlabel"> </label>
|
|
9415
|
+
<input class="towb_checkbox" type="checkbox" id="fragment-survivesRestart" />
|
|
9416
|
+
<label class="towb_checkboxlabel" for="fragment-survivesRestart">Survives restart <span style="color:#aaa; font-size:0.85em;">(also writes to disk)</span></label>
|
|
9417
|
+
</div>
|
|
9418
|
+
</script>
|
|
9419
|
+
|
|
9420
|
+
<script type="text/javascript" fragment-section="onLoad">
|
|
9421
|
+
var $c = $(container);
|
|
9422
|
+
$c.find("#fragment-survivesRedeploy").prop("checked", config.survivesRedeploy || false);
|
|
9423
|
+
$c.find("#fragment-survivesRestart").prop("checked", config.survivesRestart || false);
|
|
9424
|
+
|
|
9425
|
+
$c.find("#fragment-survivesRestart").on("change", function() {
|
|
9426
|
+
if ($(this).prop("checked")) {
|
|
9427
|
+
$c.find("#fragment-survivesRedeploy").prop("checked", true).prop("disabled", true);
|
|
9428
|
+
} else {
|
|
9429
|
+
$c.find("#fragment-survivesRedeploy").prop("disabled", false);
|
|
9430
|
+
}
|
|
9431
|
+
}).trigger("change");
|
|
9432
|
+
</script>
|
|
9433
|
+
|
|
9434
|
+
<script type="text/javascript" fragment-section="onSave">
|
|
9435
|
+
var $c = $(container);
|
|
9436
|
+
return {
|
|
9437
|
+
survivesRedeploy: $c.find("#fragment-survivesRedeploy").prop("checked"),
|
|
9438
|
+
survivesRestart: $c.find("#fragment-survivesRestart").prop("checked")
|
|
9439
|
+
};
|
|
9440
|
+
</script>
|
|
9441
|
+
`;
|
|
9442
|
+
ConfigFragmentService_1.ConfigFragmentService.registerFragment({
|
|
9443
|
+
section: "StateConfig",
|
|
9444
|
+
providerType: "InternalStateConfigNode",
|
|
9445
|
+
html: INTERNAL_STATE_FRAGMENT_HTML
|
|
9446
|
+
});
|
|
9408
9447
|
}
|
|
9409
9448
|
});
|
|
9410
9449
|
|
|
@@ -9423,6 +9462,7 @@ var require_StateTemplate = __commonJS({
|
|
|
9423
9462
|
var NodeGenerator_1 = require_NodeGenerator();
|
|
9424
9463
|
var NodeConstructor_1 = require_NodeConstructor();
|
|
9425
9464
|
var TemplateDescriptionDecorator_1 = require_TemplateDescriptionDecorator();
|
|
9465
|
+
var BasicTemplate_1 = require_BasicTemplate();
|
|
9426
9466
|
var DelegatedConfigReferenceNode_1 = require_DelegatedConfigReferenceNode();
|
|
9427
9467
|
var InternalStateConfigNode_1 = require_InternalStateConfigNode();
|
|
9428
9468
|
var StateService_1 = require_StateService();
|
|
@@ -9433,7 +9473,7 @@ var require_StateTemplate = __commonJS({
|
|
|
9433
9473
|
(0, TemplateDescriptionDecorator_1.TemplateDescription)({
|
|
9434
9474
|
name: "state",
|
|
9435
9475
|
templateFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "StateTemplate.html",
|
|
9436
|
-
dependencies: [DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, InternalStateConfigNode_1.InternalStateConfigNode, StateService_1.StateService]
|
|
9476
|
+
dependencies: [BasicTemplate_1.BasicTemplate, DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, InternalStateConfigNode_1.InternalStateConfigNode, StateService_1.StateService]
|
|
9437
9477
|
})
|
|
9438
9478
|
], StateTemplate);
|
|
9439
9479
|
}
|
|
@@ -9632,6 +9672,35 @@ var require_InputService = __commonJS({
|
|
|
9632
9672
|
}
|
|
9633
9673
|
});
|
|
9634
9674
|
|
|
9675
|
+
// ../nodered_plugincore/build/core/configfragment/template/ConfigFragmentTemplate.js
|
|
9676
|
+
var require_ConfigFragmentTemplate = __commonJS({
|
|
9677
|
+
"../nodered_plugincore/build/core/configfragment/template/ConfigFragmentTemplate.js"(exports2) {
|
|
9678
|
+
"use strict";
|
|
9679
|
+
var __decorate = exports2 && exports2.__decorate || function(decorators, target, key, desc) {
|
|
9680
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
9681
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
9682
|
+
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;
|
|
9683
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
9684
|
+
};
|
|
9685
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
9686
|
+
exports2.ConfigFragmentTemplate = void 0;
|
|
9687
|
+
var NodeGenerator_1 = require_NodeGenerator();
|
|
9688
|
+
var NodeConstructor_1 = require_NodeConstructor();
|
|
9689
|
+
var TemplateDescriptionDecorator_1 = require_TemplateDescriptionDecorator();
|
|
9690
|
+
var ConfigFragmentService_1 = require_ConfigFragmentService();
|
|
9691
|
+
var ConfigFragmentTemplate = class ConfigFragmentTemplate extends NodeConstructor_1.Template {
|
|
9692
|
+
};
|
|
9693
|
+
exports2.ConfigFragmentTemplate = ConfigFragmentTemplate;
|
|
9694
|
+
exports2.ConfigFragmentTemplate = ConfigFragmentTemplate = __decorate([
|
|
9695
|
+
(0, TemplateDescriptionDecorator_1.TemplateDescription)({
|
|
9696
|
+
name: "configfragment",
|
|
9697
|
+
templateFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "ConfigFragmentTemplate.html",
|
|
9698
|
+
dependencies: [ConfigFragmentService_1.ConfigFragmentService]
|
|
9699
|
+
})
|
|
9700
|
+
], ConfigFragmentTemplate);
|
|
9701
|
+
}
|
|
9702
|
+
});
|
|
9703
|
+
|
|
9635
9704
|
// ../nodered_plugincore/node_modules/ms/index.js
|
|
9636
9705
|
var require_ms = __commonJS({
|
|
9637
9706
|
"../nodered_plugincore/node_modules/ms/index.js"(exports2, module2) {
|
package/build/Plugins.js
CHANGED
|
@@ -8877,102 +8877,6 @@ var require_MetricsTemplate = __commonJS({
|
|
|
8877
8877
|
}
|
|
8878
8878
|
});
|
|
8879
8879
|
|
|
8880
|
-
// ../nodered_plugincore/build/core/configfragment/service/ConfigFragmentService.js
|
|
8881
|
-
var require_ConfigFragmentService = __commonJS({
|
|
8882
|
-
"../nodered_plugincore/build/core/configfragment/service/ConfigFragmentService.js"(exports2) {
|
|
8883
|
-
"use strict";
|
|
8884
|
-
var __decorate = exports2 && exports2.__decorate || function(decorators, target, key, desc) {
|
|
8885
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
8886
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
8887
|
-
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;
|
|
8888
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
8889
|
-
};
|
|
8890
|
-
var __metadata = exports2 && exports2.__metadata || function(k, v) {
|
|
8891
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
8892
|
-
};
|
|
8893
|
-
var ConfigFragmentService_1;
|
|
8894
|
-
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
8895
|
-
exports2.ConfigFragmentService = void 0;
|
|
8896
|
-
var NodeConstructor_1 = require_NodeConstructor();
|
|
8897
|
-
var ServiceDescriptionDecorator_1 = require_ServiceDescriptionDecorator();
|
|
8898
|
-
var ConfigFragmentService = ConfigFragmentService_1 = class ConfigFragmentService extends NodeConstructor_1.BaseService {
|
|
8899
|
-
// Global-backed registry so fragments registered across bundle boundaries are visible.
|
|
8900
|
-
static get _fragments() {
|
|
8901
|
-
if (!global.__plugincore_config_fragments__) {
|
|
8902
|
-
global.__plugincore_config_fragments__ = [];
|
|
8903
|
-
}
|
|
8904
|
-
return global.__plugincore_config_fragments__;
|
|
8905
|
-
}
|
|
8906
|
-
constructor() {
|
|
8907
|
-
super("configfragments");
|
|
8908
|
-
}
|
|
8909
|
-
init(red) {
|
|
8910
|
-
red.httpAdmin.get("/configfragment/:section/:providerType", red.auth.needsPermission("inject.write"), (request, response) => {
|
|
8911
|
-
const { section, providerType } = request.params;
|
|
8912
|
-
const fragment = ConfigFragmentService_1._fragments.find((f) => f.section === section && f.providerType === providerType);
|
|
8913
|
-
if (fragment) {
|
|
8914
|
-
response.type("text/html").send(fragment.html);
|
|
8915
|
-
} else {
|
|
8916
|
-
response.status(404).send("");
|
|
8917
|
-
}
|
|
8918
|
-
});
|
|
8919
|
-
return Promise.resolve();
|
|
8920
|
-
}
|
|
8921
|
-
deinit(red) {
|
|
8922
|
-
return Promise.resolve();
|
|
8923
|
-
}
|
|
8924
|
-
/**
|
|
8925
|
-
* Register a config fragment. Called by provider plugins during their service init().
|
|
8926
|
-
* Provider plugins own both sides of the contract: the HTML fragment that collects
|
|
8927
|
-
* the configuration AND the server-side factory that deserializes it.
|
|
8928
|
-
*/
|
|
8929
|
-
static registerFragment(registration) {
|
|
8930
|
-
const existing = ConfigFragmentService_1._fragments.find((f) => f.section === registration.section && f.providerType === registration.providerType);
|
|
8931
|
-
if (!existing) {
|
|
8932
|
-
ConfigFragmentService_1._fragments.push(registration);
|
|
8933
|
-
}
|
|
8934
|
-
}
|
|
8935
|
-
};
|
|
8936
|
-
exports2.ConfigFragmentService = ConfigFragmentService;
|
|
8937
|
-
exports2.ConfigFragmentService = ConfigFragmentService = ConfigFragmentService_1 = __decorate([
|
|
8938
|
-
(0, ServiceDescriptionDecorator_1.ServiceDescription)({
|
|
8939
|
-
id: "@theotherwillembotha/configfragmentservice",
|
|
8940
|
-
sourceFile: "@theotherwillembotha/node-red-plugincore"
|
|
8941
|
-
}),
|
|
8942
|
-
__metadata("design:paramtypes", [])
|
|
8943
|
-
], ConfigFragmentService);
|
|
8944
|
-
}
|
|
8945
|
-
});
|
|
8946
|
-
|
|
8947
|
-
// ../nodered_plugincore/build/core/configfragment/template/ConfigFragmentTemplate.js
|
|
8948
|
-
var require_ConfigFragmentTemplate = __commonJS({
|
|
8949
|
-
"../nodered_plugincore/build/core/configfragment/template/ConfigFragmentTemplate.js"(exports2) {
|
|
8950
|
-
"use strict";
|
|
8951
|
-
var __decorate = exports2 && exports2.__decorate || function(decorators, target, key, desc) {
|
|
8952
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
8953
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
8954
|
-
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;
|
|
8955
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
8956
|
-
};
|
|
8957
|
-
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
8958
|
-
exports2.ConfigFragmentTemplate = void 0;
|
|
8959
|
-
var NodeGenerator_1 = require_NodeGenerator();
|
|
8960
|
-
var NodeConstructor_1 = require_NodeConstructor();
|
|
8961
|
-
var TemplateDescriptionDecorator_1 = require_TemplateDescriptionDecorator();
|
|
8962
|
-
var ConfigFragmentService_1 = require_ConfigFragmentService();
|
|
8963
|
-
var ConfigFragmentTemplate = class ConfigFragmentTemplate extends NodeConstructor_1.Template {
|
|
8964
|
-
};
|
|
8965
|
-
exports2.ConfigFragmentTemplate = ConfigFragmentTemplate;
|
|
8966
|
-
exports2.ConfigFragmentTemplate = ConfigFragmentTemplate = __decorate([
|
|
8967
|
-
(0, TemplateDescriptionDecorator_1.TemplateDescription)({
|
|
8968
|
-
name: "configfragment",
|
|
8969
|
-
templateFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "ConfigFragmentTemplate.html",
|
|
8970
|
-
dependencies: [ConfigFragmentService_1.ConfigFragmentService]
|
|
8971
|
-
})
|
|
8972
|
-
], ConfigFragmentTemplate);
|
|
8973
|
-
}
|
|
8974
|
-
});
|
|
8975
|
-
|
|
8976
8880
|
// ../nodered_plugincore/build/core/metrics/template/CounterMetricTemplate.js
|
|
8977
8881
|
var require_CounterMetricTemplate = __commonJS({
|
|
8978
8882
|
"../nodered_plugincore/build/core/metrics/template/CounterMetricTemplate.js"(exports2) {
|
|
@@ -8991,7 +8895,6 @@ var require_CounterMetricTemplate = __commonJS({
|
|
|
8991
8895
|
var BasicTemplate_1 = require_BasicTemplate();
|
|
8992
8896
|
var MetricsService_1 = require_MetricsService();
|
|
8993
8897
|
var DelegatedConfigReferenceNode_1 = require_DelegatedConfigReferenceNode();
|
|
8994
|
-
var ConfigFragmentTemplate_1 = require_ConfigFragmentTemplate();
|
|
8995
8898
|
var CounterMetricTemplate = class CounterMetricTemplate extends NodeConstructor_1.Template {
|
|
8996
8899
|
};
|
|
8997
8900
|
exports2.CounterMetricTemplate = CounterMetricTemplate;
|
|
@@ -8999,7 +8902,7 @@ var require_CounterMetricTemplate = __commonJS({
|
|
|
8999
8902
|
(0, TemplateDescriptionDecorator_1.TemplateDescription)({
|
|
9000
8903
|
name: "countermetric",
|
|
9001
8904
|
templateFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "CounterMetricTemplate.html",
|
|
9002
|
-
dependencies: [BasicTemplate_1.BasicTemplate, DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, MetricsService_1.MetricsService
|
|
8905
|
+
dependencies: [BasicTemplate_1.BasicTemplate, DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, MetricsService_1.MetricsService]
|
|
9003
8906
|
})
|
|
9004
8907
|
], CounterMetricTemplate);
|
|
9005
8908
|
}
|
|
@@ -9023,7 +8926,6 @@ var require_GaugeMetricTemplate = __commonJS({
|
|
|
9023
8926
|
var BasicTemplate_1 = require_BasicTemplate();
|
|
9024
8927
|
var MetricsService_1 = require_MetricsService();
|
|
9025
8928
|
var DelegatedConfigReferenceNode_1 = require_DelegatedConfigReferenceNode();
|
|
9026
|
-
var ConfigFragmentTemplate_1 = require_ConfigFragmentTemplate();
|
|
9027
8929
|
var GaugeMetricTemplate = class GaugeMetricTemplate extends NodeConstructor_1.Template {
|
|
9028
8930
|
};
|
|
9029
8931
|
exports2.GaugeMetricTemplate = GaugeMetricTemplate;
|
|
@@ -9031,7 +8933,7 @@ var require_GaugeMetricTemplate = __commonJS({
|
|
|
9031
8933
|
(0, TemplateDescriptionDecorator_1.TemplateDescription)({
|
|
9032
8934
|
name: "gaugemetric",
|
|
9033
8935
|
templateFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "GaugeMetricTemplate.html",
|
|
9034
|
-
dependencies: [BasicTemplate_1.BasicTemplate, DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, MetricsService_1.MetricsService
|
|
8936
|
+
dependencies: [BasicTemplate_1.BasicTemplate, DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, MetricsService_1.MetricsService]
|
|
9035
8937
|
})
|
|
9036
8938
|
], GaugeMetricTemplate);
|
|
9037
8939
|
}
|
|
@@ -9076,7 +8978,6 @@ var require_TimerMetricTemplate = __commonJS({
|
|
|
9076
8978
|
var BasicTemplate_1 = require_BasicTemplate();
|
|
9077
8979
|
var MetricsService_1 = require_MetricsService();
|
|
9078
8980
|
var DelegatedConfigReferenceNode_1 = require_DelegatedConfigReferenceNode();
|
|
9079
|
-
var ConfigFragmentTemplate_1 = require_ConfigFragmentTemplate();
|
|
9080
8981
|
var TimerMetricTemplate = class TimerMetricTemplate extends NodeConstructor_1.Template {
|
|
9081
8982
|
};
|
|
9082
8983
|
exports2.TimerMetricTemplate = TimerMetricTemplate;
|
|
@@ -9084,7 +8985,7 @@ var require_TimerMetricTemplate = __commonJS({
|
|
|
9084
8985
|
(0, TemplateDescriptionDecorator_1.TemplateDescription)({
|
|
9085
8986
|
name: "timermetric",
|
|
9086
8987
|
templateFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "TimerMetricTemplate.html",
|
|
9087
|
-
dependencies: [BasicTemplate_1.BasicTemplate, DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, MetricsService_1.MetricsService
|
|
8988
|
+
dependencies: [BasicTemplate_1.BasicTemplate, DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, MetricsService_1.MetricsService]
|
|
9088
8989
|
})
|
|
9089
8990
|
], TimerMetricTemplate);
|
|
9090
8991
|
}
|
|
@@ -9162,8 +9063,10 @@ var require_StateService = __commonJS({
|
|
|
9162
9063
|
var _GLOBAL_STATE_MEMORY_KEY = "__plugincore_internalstate_memory__";
|
|
9163
9064
|
var _GLOBAL_STATE_SUBS_KEY = "__plugincore_internalstate_subscribers__";
|
|
9164
9065
|
var _GLOBAL_STATE_FACTORIES_KEY = "__plugincore_state_factories__";
|
|
9066
|
+
var _GLOBAL_STATE_TYPE_FACTORIES_KEY = "__plugincore_state_type_factories__";
|
|
9165
9067
|
var _GLOBAL_STATE_CONFIG_KEY = "__plugincore_state_config__";
|
|
9166
9068
|
var _GLOBAL_STATE_USERDIR_KEY = "__plugincore_state_userDir__";
|
|
9069
|
+
var _GLOBAL_STATE_RED_KEY = "__plugincore_state_red__";
|
|
9167
9070
|
function getMemoryStore() {
|
|
9168
9071
|
if (!global[_GLOBAL_STATE_MEMORY_KEY])
|
|
9169
9072
|
global[_GLOBAL_STATE_MEMORY_KEY] = /* @__PURE__ */ new Map();
|
|
@@ -9179,6 +9082,11 @@ var require_StateService = __commonJS({
|
|
|
9179
9082
|
global[_GLOBAL_STATE_FACTORIES_KEY] = /* @__PURE__ */ new Map();
|
|
9180
9083
|
return global[_GLOBAL_STATE_FACTORIES_KEY];
|
|
9181
9084
|
}
|
|
9085
|
+
function getTypeFactoryStore() {
|
|
9086
|
+
if (!global[_GLOBAL_STATE_TYPE_FACTORIES_KEY])
|
|
9087
|
+
global[_GLOBAL_STATE_TYPE_FACTORIES_KEY] = /* @__PURE__ */ new Map();
|
|
9088
|
+
return global[_GLOBAL_STATE_TYPE_FACTORIES_KEY];
|
|
9089
|
+
}
|
|
9182
9090
|
function getConfigStore() {
|
|
9183
9091
|
if (!global[_GLOBAL_STATE_CONFIG_KEY])
|
|
9184
9092
|
global[_GLOBAL_STATE_CONFIG_KEY] = /* @__PURE__ */ new Map();
|
|
@@ -9199,6 +9107,7 @@ var require_StateService = __commonJS({
|
|
|
9199
9107
|
}
|
|
9200
9108
|
init(red) {
|
|
9201
9109
|
global[_GLOBAL_STATE_USERDIR_KEY] = red.settings.userDir;
|
|
9110
|
+
global[_GLOBAL_STATE_RED_KEY] = red;
|
|
9202
9111
|
}
|
|
9203
9112
|
deinit(_red) {
|
|
9204
9113
|
}
|
|
@@ -9228,6 +9137,10 @@ var require_StateService = __commonJS({
|
|
|
9228
9137
|
static registerConfig(nodeId, config) {
|
|
9229
9138
|
getConfigStore().set(nodeId, config);
|
|
9230
9139
|
}
|
|
9140
|
+
// ---- Type-based factory registration (called by provider modules at load time) ----
|
|
9141
|
+
static registerTypeFactory(typeName, factory) {
|
|
9142
|
+
getTypeFactoryStore().set(typeName, factory);
|
|
9143
|
+
}
|
|
9231
9144
|
// ---- Handle creation (called by consumer nodes) ----
|
|
9232
9145
|
static createHandle(stateReference) {
|
|
9233
9146
|
if (!stateReference)
|
|
@@ -9235,6 +9148,19 @@ var require_StateService = __commonJS({
|
|
|
9235
9148
|
const factory = getFactoryStore().get(stateReference);
|
|
9236
9149
|
return factory ? factory() : new DoNothingStateHandle();
|
|
9237
9150
|
}
|
|
9151
|
+
static createHandleFromRef(stateReference, providerConfig, ownerId) {
|
|
9152
|
+
if (!stateReference)
|
|
9153
|
+
return new DoNothingStateHandle();
|
|
9154
|
+
const red = global[_GLOBAL_STATE_RED_KEY];
|
|
9155
|
+
if (!red)
|
|
9156
|
+
return new DoNothingStateHandle();
|
|
9157
|
+
const providerNode = red.nodes.getNode(stateReference);
|
|
9158
|
+
if (!providerNode)
|
|
9159
|
+
return new DoNothingStateHandle();
|
|
9160
|
+
const providerType = providerNode.type;
|
|
9161
|
+
const factory = getTypeFactoryStore().get(providerType);
|
|
9162
|
+
return factory ? factory(ownerId, providerConfig || {}, stateReference) : new DoNothingStateHandle();
|
|
9163
|
+
}
|
|
9238
9164
|
// ---- Memory store (used by InternalStateHandle) ----
|
|
9239
9165
|
static getMemory(nodeId) {
|
|
9240
9166
|
return getMemoryStore().get(nodeId) ?? null;
|
|
@@ -9315,6 +9241,73 @@ var require_StateConfigNode = __commonJS({
|
|
|
9315
9241
|
}
|
|
9316
9242
|
});
|
|
9317
9243
|
|
|
9244
|
+
// ../nodered_plugincore/build/core/configfragment/service/ConfigFragmentService.js
|
|
9245
|
+
var require_ConfigFragmentService = __commonJS({
|
|
9246
|
+
"../nodered_plugincore/build/core/configfragment/service/ConfigFragmentService.js"(exports2) {
|
|
9247
|
+
"use strict";
|
|
9248
|
+
var __decorate = exports2 && exports2.__decorate || function(decorators, target, key, desc) {
|
|
9249
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
9250
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
9251
|
+
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;
|
|
9252
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
9253
|
+
};
|
|
9254
|
+
var __metadata = exports2 && exports2.__metadata || function(k, v) {
|
|
9255
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9256
|
+
};
|
|
9257
|
+
var ConfigFragmentService_1;
|
|
9258
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
9259
|
+
exports2.ConfigFragmentService = void 0;
|
|
9260
|
+
var NodeConstructor_1 = require_NodeConstructor();
|
|
9261
|
+
var ServiceDescriptionDecorator_1 = require_ServiceDescriptionDecorator();
|
|
9262
|
+
var ConfigFragmentService = ConfigFragmentService_1 = class ConfigFragmentService extends NodeConstructor_1.BaseService {
|
|
9263
|
+
// Global-backed registry so fragments registered across bundle boundaries are visible.
|
|
9264
|
+
static get _fragments() {
|
|
9265
|
+
if (!global.__plugincore_config_fragments__) {
|
|
9266
|
+
global.__plugincore_config_fragments__ = [];
|
|
9267
|
+
}
|
|
9268
|
+
return global.__plugincore_config_fragments__;
|
|
9269
|
+
}
|
|
9270
|
+
constructor() {
|
|
9271
|
+
super("configfragments");
|
|
9272
|
+
}
|
|
9273
|
+
init(red) {
|
|
9274
|
+
red.httpAdmin.get("/configfragment/:section/:providerType", red.auth.needsPermission("inject.write"), (request, response) => {
|
|
9275
|
+
const { section, providerType } = request.params;
|
|
9276
|
+
const fragment = ConfigFragmentService_1._fragments.find((f) => f.section === section && f.providerType === providerType);
|
|
9277
|
+
if (fragment) {
|
|
9278
|
+
response.type("text/html").send(fragment.html);
|
|
9279
|
+
} else {
|
|
9280
|
+
response.status(404).send("");
|
|
9281
|
+
}
|
|
9282
|
+
});
|
|
9283
|
+
return Promise.resolve();
|
|
9284
|
+
}
|
|
9285
|
+
deinit(red) {
|
|
9286
|
+
return Promise.resolve();
|
|
9287
|
+
}
|
|
9288
|
+
/**
|
|
9289
|
+
* Register a config fragment. Called by provider plugins during their service init().
|
|
9290
|
+
* Provider plugins own both sides of the contract: the HTML fragment that collects
|
|
9291
|
+
* the configuration AND the server-side factory that deserializes it.
|
|
9292
|
+
*/
|
|
9293
|
+
static registerFragment(registration) {
|
|
9294
|
+
const existing = ConfigFragmentService_1._fragments.find((f) => f.section === registration.section && f.providerType === registration.providerType);
|
|
9295
|
+
if (!existing) {
|
|
9296
|
+
ConfigFragmentService_1._fragments.push(registration);
|
|
9297
|
+
}
|
|
9298
|
+
}
|
|
9299
|
+
};
|
|
9300
|
+
exports2.ConfigFragmentService = ConfigFragmentService;
|
|
9301
|
+
exports2.ConfigFragmentService = ConfigFragmentService = ConfigFragmentService_1 = __decorate([
|
|
9302
|
+
(0, ServiceDescriptionDecorator_1.ServiceDescription)({
|
|
9303
|
+
id: "@theotherwillembotha/configfragmentservice",
|
|
9304
|
+
sourceFile: "@theotherwillembotha/node-red-plugincore"
|
|
9305
|
+
}),
|
|
9306
|
+
__metadata("design:paramtypes", [])
|
|
9307
|
+
], ConfigFragmentService);
|
|
9308
|
+
}
|
|
9309
|
+
});
|
|
9310
|
+
|
|
9318
9311
|
// ../nodered_plugincore/build/core/state/node/InternalStateConfigNode.js
|
|
9319
9312
|
var require_InternalStateConfigNode = __commonJS({
|
|
9320
9313
|
"../nodered_plugincore/build/core/state/node/InternalStateConfigNode.js"(exports2) {
|
|
@@ -9334,6 +9327,7 @@ var require_InternalStateConfigNode = __commonJS({
|
|
|
9334
9327
|
var NodeGenerator_1 = require_NodeGenerator();
|
|
9335
9328
|
var StateService_1 = require_StateService();
|
|
9336
9329
|
var StateConfigNode_1 = require_StateConfigNode();
|
|
9330
|
+
var ConfigFragmentService_1 = require_ConfigFragmentService();
|
|
9337
9331
|
var InternalStateHandle = class {
|
|
9338
9332
|
constructor(nodeId, survivesRedeploy, survivesRestart) {
|
|
9339
9333
|
this._callback = null;
|
|
@@ -9381,15 +9375,9 @@ var require_InternalStateConfigNode = __commonJS({
|
|
|
9381
9375
|
var InternalStateConfigNode = class InternalStateConfigNode extends StateConfigNode_1.StateConfigNode {
|
|
9382
9376
|
constructor(node, config) {
|
|
9383
9377
|
super(node, config);
|
|
9384
|
-
this._survivesRedeploy = config.survivesRedeploy ?? false;
|
|
9385
|
-
this._survivesRestart = config.survivesRestart ?? false;
|
|
9386
|
-
StateService_1.StateService.registerConfig(config.id, {
|
|
9387
|
-
survivesRedeploy: this._survivesRedeploy,
|
|
9388
|
-
survivesRestart: this._survivesRestart
|
|
9389
|
-
});
|
|
9390
9378
|
}
|
|
9391
9379
|
createHandle() {
|
|
9392
|
-
return new InternalStateHandle(this.id(),
|
|
9380
|
+
return new InternalStateHandle(this.id(), false, false);
|
|
9393
9381
|
}
|
|
9394
9382
|
};
|
|
9395
9383
|
exports2.InternalStateConfigNode = InternalStateConfigNode;
|
|
@@ -9405,6 +9393,57 @@ var require_InternalStateConfigNode = __commonJS({
|
|
|
9405
9393
|
}),
|
|
9406
9394
|
__metadata("design:paramtypes", [Object, Object])
|
|
9407
9395
|
], InternalStateConfigNode);
|
|
9396
|
+
StateService_1.StateService.registerTypeFactory("InternalStateConfigNode", (ownerId, config, _providerRef) => {
|
|
9397
|
+
const survivesRedeploy = config.survivesRedeploy ?? false;
|
|
9398
|
+
const survivesRestart = config.survivesRestart ?? false;
|
|
9399
|
+
StateService_1.StateService.registerConfig(ownerId, { survivesRedeploy, survivesRestart });
|
|
9400
|
+
return new InternalStateHandle(ownerId, survivesRedeploy, survivesRestart);
|
|
9401
|
+
});
|
|
9402
|
+
var INTERNAL_STATE_FRAGMENT_HTML = `
|
|
9403
|
+
<script type="application/json" fragment-section="metaData">
|
|
9404
|
+
{ "label": "Persistence" }
|
|
9405
|
+
</script>
|
|
9406
|
+
|
|
9407
|
+
<script type="text/html" fragment-section="onForm">
|
|
9408
|
+
<div class="form-row nomargin">
|
|
9409
|
+
<label class="towb_editorlabel"> </label>
|
|
9410
|
+
<input class="towb_checkbox" type="checkbox" id="fragment-survivesRedeploy" />
|
|
9411
|
+
<label class="towb_checkboxlabel" for="fragment-survivesRedeploy">Survives redeploy</label>
|
|
9412
|
+
</div>
|
|
9413
|
+
<div class="form-row nomargin">
|
|
9414
|
+
<label class="towb_editorlabel"> </label>
|
|
9415
|
+
<input class="towb_checkbox" type="checkbox" id="fragment-survivesRestart" />
|
|
9416
|
+
<label class="towb_checkboxlabel" for="fragment-survivesRestart">Survives restart <span style="color:#aaa; font-size:0.85em;">(also writes to disk)</span></label>
|
|
9417
|
+
</div>
|
|
9418
|
+
</script>
|
|
9419
|
+
|
|
9420
|
+
<script type="text/javascript" fragment-section="onLoad">
|
|
9421
|
+
var $c = $(container);
|
|
9422
|
+
$c.find("#fragment-survivesRedeploy").prop("checked", config.survivesRedeploy || false);
|
|
9423
|
+
$c.find("#fragment-survivesRestart").prop("checked", config.survivesRestart || false);
|
|
9424
|
+
|
|
9425
|
+
$c.find("#fragment-survivesRestart").on("change", function() {
|
|
9426
|
+
if ($(this).prop("checked")) {
|
|
9427
|
+
$c.find("#fragment-survivesRedeploy").prop("checked", true).prop("disabled", true);
|
|
9428
|
+
} else {
|
|
9429
|
+
$c.find("#fragment-survivesRedeploy").prop("disabled", false);
|
|
9430
|
+
}
|
|
9431
|
+
}).trigger("change");
|
|
9432
|
+
</script>
|
|
9433
|
+
|
|
9434
|
+
<script type="text/javascript" fragment-section="onSave">
|
|
9435
|
+
var $c = $(container);
|
|
9436
|
+
return {
|
|
9437
|
+
survivesRedeploy: $c.find("#fragment-survivesRedeploy").prop("checked"),
|
|
9438
|
+
survivesRestart: $c.find("#fragment-survivesRestart").prop("checked")
|
|
9439
|
+
};
|
|
9440
|
+
</script>
|
|
9441
|
+
`;
|
|
9442
|
+
ConfigFragmentService_1.ConfigFragmentService.registerFragment({
|
|
9443
|
+
section: "StateConfig",
|
|
9444
|
+
providerType: "InternalStateConfigNode",
|
|
9445
|
+
html: INTERNAL_STATE_FRAGMENT_HTML
|
|
9446
|
+
});
|
|
9408
9447
|
}
|
|
9409
9448
|
});
|
|
9410
9449
|
|
|
@@ -9423,6 +9462,7 @@ var require_StateTemplate = __commonJS({
|
|
|
9423
9462
|
var NodeGenerator_1 = require_NodeGenerator();
|
|
9424
9463
|
var NodeConstructor_1 = require_NodeConstructor();
|
|
9425
9464
|
var TemplateDescriptionDecorator_1 = require_TemplateDescriptionDecorator();
|
|
9465
|
+
var BasicTemplate_1 = require_BasicTemplate();
|
|
9426
9466
|
var DelegatedConfigReferenceNode_1 = require_DelegatedConfigReferenceNode();
|
|
9427
9467
|
var InternalStateConfigNode_1 = require_InternalStateConfigNode();
|
|
9428
9468
|
var StateService_1 = require_StateService();
|
|
@@ -9433,7 +9473,7 @@ var require_StateTemplate = __commonJS({
|
|
|
9433
9473
|
(0, TemplateDescriptionDecorator_1.TemplateDescription)({
|
|
9434
9474
|
name: "state",
|
|
9435
9475
|
templateFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "StateTemplate.html",
|
|
9436
|
-
dependencies: [DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, InternalStateConfigNode_1.InternalStateConfigNode, StateService_1.StateService]
|
|
9476
|
+
dependencies: [BasicTemplate_1.BasicTemplate, DelegatedConfigReferenceNode_1.DelegatedConfigReferenceNode, InternalStateConfigNode_1.InternalStateConfigNode, StateService_1.StateService]
|
|
9437
9477
|
})
|
|
9438
9478
|
], StateTemplate);
|
|
9439
9479
|
}
|
|
@@ -9632,6 +9672,35 @@ var require_InputService = __commonJS({
|
|
|
9632
9672
|
}
|
|
9633
9673
|
});
|
|
9634
9674
|
|
|
9675
|
+
// ../nodered_plugincore/build/core/configfragment/template/ConfigFragmentTemplate.js
|
|
9676
|
+
var require_ConfigFragmentTemplate = __commonJS({
|
|
9677
|
+
"../nodered_plugincore/build/core/configfragment/template/ConfigFragmentTemplate.js"(exports2) {
|
|
9678
|
+
"use strict";
|
|
9679
|
+
var __decorate = exports2 && exports2.__decorate || function(decorators, target, key, desc) {
|
|
9680
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
9681
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
9682
|
+
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;
|
|
9683
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
9684
|
+
};
|
|
9685
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
9686
|
+
exports2.ConfigFragmentTemplate = void 0;
|
|
9687
|
+
var NodeGenerator_1 = require_NodeGenerator();
|
|
9688
|
+
var NodeConstructor_1 = require_NodeConstructor();
|
|
9689
|
+
var TemplateDescriptionDecorator_1 = require_TemplateDescriptionDecorator();
|
|
9690
|
+
var ConfigFragmentService_1 = require_ConfigFragmentService();
|
|
9691
|
+
var ConfigFragmentTemplate = class ConfigFragmentTemplate extends NodeConstructor_1.Template {
|
|
9692
|
+
};
|
|
9693
|
+
exports2.ConfigFragmentTemplate = ConfigFragmentTemplate;
|
|
9694
|
+
exports2.ConfigFragmentTemplate = ConfigFragmentTemplate = __decorate([
|
|
9695
|
+
(0, TemplateDescriptionDecorator_1.TemplateDescription)({
|
|
9696
|
+
name: "configfragment",
|
|
9697
|
+
templateFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "ConfigFragmentTemplate.html",
|
|
9698
|
+
dependencies: [ConfigFragmentService_1.ConfigFragmentService]
|
|
9699
|
+
})
|
|
9700
|
+
], ConfigFragmentTemplate);
|
|
9701
|
+
}
|
|
9702
|
+
});
|
|
9703
|
+
|
|
9635
9704
|
// ../nodered_plugincore/node_modules/ms/index.js
|
|
9636
9705
|
var require_ms = __commonJS({
|
|
9637
9706
|
"../nodered_plugincore/node_modules/ms/index.js"(exports2, module2) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theotherwillembotha/node-red-cluster",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.5",
|
|
4
4
|
"description": "Node-RED clustering plugin - connect multiple Node-RED instances into a coordinated cluster using NATS JetStream for message transport and NATS KV for shared state.",
|
|
5
5
|
"main": "./build/index.js",
|
|
6
6
|
"exports": "./build/index.js",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"@nats-io/kv": "^3.4.0",
|
|
47
47
|
"@nats-io/nats-core": "^3.4.0",
|
|
48
48
|
"@nats-io/transport-node": "^3.4.0",
|
|
49
|
-
"@theotherwillembotha/node-red-plugincore": "^0.4.
|
|
49
|
+
"@theotherwillembotha/node-red-plugincore": "^0.4.5"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@theotherwillembotha/node-red-plugincore": "../nodered_plugincore",
|