@vsaas/remoting 10.0.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.
- package/LICENSE.md +202 -0
- package/README.md +78 -0
- package/dist/_virtual/_rolldown/runtime.js +32 -0
- package/dist/ext/meta.d.ts +1 -0
- package/dist/ext/meta.js +39 -0
- package/dist/ext/meta.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/context-base.d.ts +1 -0
- package/dist/lib/context-base.js +30 -0
- package/dist/lib/context-base.js.map +1 -0
- package/dist/lib/deprecate.d.ts +1 -0
- package/dist/lib/deprecate.js +34 -0
- package/dist/lib/deprecate.js.map +1 -0
- package/dist/lib/escape-regexp.d.ts +1 -0
- package/dist/lib/escape-regexp.js +12 -0
- package/dist/lib/escape-regexp.js.map +1 -0
- package/dist/lib/exports-helper.d.ts +1 -0
- package/dist/lib/exports-helper.js +101 -0
- package/dist/lib/exports-helper.js.map +1 -0
- package/dist/lib/http-context.d.ts +1 -0
- package/dist/lib/http-context.js +484 -0
- package/dist/lib/http-context.js.map +1 -0
- package/dist/lib/http-invocation.d.ts +1 -0
- package/dist/lib/http-invocation.js +254 -0
- package/dist/lib/http-invocation.js.map +1 -0
- package/dist/lib/jsonrpc-adapter.d.ts +1 -0
- package/dist/lib/jsonrpc-adapter.js +187 -0
- package/dist/lib/jsonrpc-adapter.js.map +1 -0
- package/dist/lib/looks-like-json.d.ts +1 -0
- package/dist/lib/looks-like-json.js +22 -0
- package/dist/lib/looks-like-json.js.map +1 -0
- package/dist/lib/messages.d.ts +1 -0
- package/dist/lib/messages.js +24 -0
- package/dist/lib/messages.js.map +1 -0
- package/dist/lib/number-checks.d.ts +1 -0
- package/dist/lib/number-checks.js +18 -0
- package/dist/lib/number-checks.js.map +1 -0
- package/dist/lib/phases/merge-phase-name-lists.d.ts +5 -0
- package/dist/lib/phases/merge-phase-name-lists.d.ts.map +1 -0
- package/dist/lib/phases/merge-phase-name-lists.js +39 -0
- package/dist/lib/phases/merge-phase-name-lists.js.map +1 -0
- package/dist/lib/phases/phase-list.d.ts +27 -0
- package/dist/lib/phases/phase-list.d.ts.map +1 -0
- package/dist/lib/phases/phase-list.js +154 -0
- package/dist/lib/phases/phase-list.js.map +1 -0
- package/dist/lib/phases/phase.d.ts +24 -0
- package/dist/lib/phases/phase.d.ts.map +1 -0
- package/dist/lib/phases/phase.js +144 -0
- package/dist/lib/phases/phase.js.map +1 -0
- package/dist/lib/remote-objects.d.ts +1 -0
- package/dist/lib/remote-objects.js +642 -0
- package/dist/lib/remote-objects.js.map +1 -0
- package/dist/lib/rest-adapter-browser.d.ts +1 -0
- package/dist/lib/rest-adapter-browser.js +302 -0
- package/dist/lib/rest-adapter-browser.js.map +1 -0
- package/dist/lib/rest-adapter.d.ts +1 -0
- package/dist/lib/rest-adapter.js +519 -0
- package/dist/lib/rest-adapter.js.map +1 -0
- package/dist/lib/server-sent-events.d.ts +1 -0
- package/dist/lib/server-sent-events.js +61 -0
- package/dist/lib/server-sent-events.js.map +1 -0
- package/dist/lib/shared-class.d.ts +1 -0
- package/dist/lib/shared-class.js +207 -0
- package/dist/lib/shared-class.js.map +1 -0
- package/dist/lib/shared-method.d.ts +1 -0
- package/dist/lib/shared-method.js +469 -0
- package/dist/lib/shared-method.js.map +1 -0
- package/dist/lib/socket-io-adapter.d.ts +1 -0
- package/dist/lib/socket-io-adapter.js +93 -0
- package/dist/lib/socket-io-adapter.js.map +1 -0
- package/dist/lib/socket-io-context.d.ts +1 -0
- package/dist/lib/socket-io-context.js +94 -0
- package/dist/lib/socket-io-context.js.map +1 -0
- package/dist/lib/type-registry.d.ts +1 -0
- package/dist/lib/type-registry.js +99 -0
- package/dist/lib/type-registry.js.map +1 -0
- package/dist/lib/types/any.d.ts +1 -0
- package/dist/lib/types/any.js +44 -0
- package/dist/lib/types/any.js.map +1 -0
- package/dist/lib/types/array.d.ts +1 -0
- package/dist/lib/types/array.js +99 -0
- package/dist/lib/types/array.js.map +1 -0
- package/dist/lib/types/boolean.d.ts +1 -0
- package/dist/lib/types/boolean.js +37 -0
- package/dist/lib/types/boolean.js.map +1 -0
- package/dist/lib/types/date.d.ts +1 -0
- package/dist/lib/types/date.js +37 -0
- package/dist/lib/types/date.js.map +1 -0
- package/dist/lib/types/geopoint.d.ts +1 -0
- package/dist/lib/types/geopoint.js +68 -0
- package/dist/lib/types/geopoint.js.map +1 -0
- package/dist/lib/types/integer.d.ts +1 -0
- package/dist/lib/types/integer.js +36 -0
- package/dist/lib/types/integer.js.map +1 -0
- package/dist/lib/types/number.d.ts +1 -0
- package/dist/lib/types/number.js +30 -0
- package/dist/lib/types/number.js.map +1 -0
- package/dist/lib/types/object.d.ts +1 -0
- package/dist/lib/types/object.js +57 -0
- package/dist/lib/types/object.js.map +1 -0
- package/dist/lib/types/string.d.ts +1 -0
- package/dist/lib/types/string.js +29 -0
- package/dist/lib/types/string.js.map +1 -0
- package/dist/phases.d.ts +4 -0
- package/dist/phases.js +35 -0
- package/dist/phases.js.map +1 -0
- package/package.json +96 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-sent-events.js","names":[],"sources":["../../src/lib/server-sent-events.ts"],"sourcesContent":["// Copyright IBM Corp. 2026. All Rights Reserved.\n// Node module: strong-remoting\n// This file is licensed under the Artistic License 2.0.\n// License text available at https://opensource.org/licenses/Artistic-2.0\n\n// @ts-nocheck\n'use strict';\n\nmodule.exports = ServerSentEvents;\n\nconst EventEmitter = require('events').EventEmitter;\nconst util = require('util');\nconst inherits = util.inherits;\n\nfunction ServerSentEvents(req, res) {\n EventEmitter.call(this);\n this.req = req;\n this.res = res;\n this.initialized = false;\n this.closed = false;\n\n const emitClose = this._emitClose.bind(this);\n\n if (req && typeof req.on === 'function') {\n req.on('close', emitClose);\n }\n\n if (res && typeof res.on === 'function') {\n res.on('close', emitClose);\n }\n}\n\ninherits(ServerSentEvents, EventEmitter);\n\nServerSentEvents.prototype.initialize = function () {\n if (this.initialized) {\n return;\n }\n\n const res = this.res;\n\n if (!res.getHeader('Content-Type')) {\n res.setHeader('Content-Type', 'text/event-stream');\n }\n\n if (!res.getHeader('Cache-Control')) {\n res.setHeader('Cache-Control', 'no-cache, no-transform');\n }\n\n if (!res.getHeader('Connection')) {\n res.setHeader('Connection', 'keep-alive');\n }\n\n if (typeof res.flushHeaders === 'function') {\n res.flushHeaders();\n }\n\n res.write('\\n');\n this.initialized = true;\n};\n\nServerSentEvents.prototype.send = function (eventOrMessage, data) {\n const message = normalizeMessage(eventOrMessage, data);\n this.res.write(serializeMessage(message));\n\n if (typeof this.res.flush === 'function') {\n this.res.flush();\n }\n};\n\nServerSentEvents.prototype._emitClose = function () {\n if (this.closed) {\n return;\n }\n\n this.closed = true;\n this.emit('close');\n};\n\nfunction normalizeMessage(eventOrMessage, data) {\n if (eventOrMessage && typeof eventOrMessage === 'object') {\n return eventOrMessage;\n }\n\n return {\n event: eventOrMessage,\n data: data,\n };\n}\n\nfunction serializeMessage(message) {\n let output = '';\n\n if (message.id !== undefined) {\n output += serializeField('id', message.id);\n }\n\n if (message.event !== undefined) {\n output += serializeField('event', message.event);\n }\n\n if (message.retry !== undefined) {\n output += serializeField('retry', message.retry);\n }\n\n if (message.data === undefined) {\n output += 'data:\\n';\n } else {\n output += serializeField('data', message.data);\n }\n\n return output + '\\n';\n}\n\nfunction serializeField(name, value) {\n return String(value)\n .split(/\\r?\\n/u)\n .map((line) => name + ': ' + line + '\\n')\n .join('');\n}\n"],"mappings":";;;AAQA,QAAO,UAAU;CAEjB,MAAM,eAAe,QAAQ,SAAS,CAAC;CAEvC,MAAM,WADO,QAAQ,OAAO,CACN;CAEtB,SAAS,iBAAiB,KAAK,KAAK;AAClC,eAAa,KAAK,KAAK;AACvB,OAAK,MAAM;AACX,OAAK,MAAM;AACX,OAAK,cAAc;AACnB,OAAK,SAAS;EAEd,MAAM,YAAY,KAAK,WAAW,KAAK,KAAK;AAE5C,MAAI,OAAO,OAAO,IAAI,OAAO,WAC3B,KAAI,GAAG,SAAS,UAAU;AAG5B,MAAI,OAAO,OAAO,IAAI,OAAO,WAC3B,KAAI,GAAG,SAAS,UAAU;;AAI9B,UAAS,kBAAkB,aAAa;AAExC,kBAAiB,UAAU,aAAa,WAAY;AAClD,MAAI,KAAK,YACP;EAGF,MAAM,MAAM,KAAK;AAEjB,MAAI,CAAC,IAAI,UAAU,eAAe,CAChC,KAAI,UAAU,gBAAgB,oBAAoB;AAGpD,MAAI,CAAC,IAAI,UAAU,gBAAgB,CACjC,KAAI,UAAU,iBAAiB,yBAAyB;AAG1D,MAAI,CAAC,IAAI,UAAU,aAAa,CAC9B,KAAI,UAAU,cAAc,aAAa;AAG3C,MAAI,OAAO,IAAI,iBAAiB,WAC9B,KAAI,cAAc;AAGpB,MAAI,MAAM,KAAK;AACf,OAAK,cAAc;;AAGrB,kBAAiB,UAAU,OAAO,SAAU,gBAAgB,MAAM;EAChE,MAAM,UAAU,iBAAiB,gBAAgB,KAAK;AACtD,OAAK,IAAI,MAAM,iBAAiB,QAAQ,CAAC;AAEzC,MAAI,OAAO,KAAK,IAAI,UAAU,WAC5B,MAAK,IAAI,OAAO;;AAIpB,kBAAiB,UAAU,aAAa,WAAY;AAClD,MAAI,KAAK,OACP;AAGF,OAAK,SAAS;AACd,OAAK,KAAK,QAAQ;;CAGpB,SAAS,iBAAiB,gBAAgB,MAAM;AAC9C,MAAI,kBAAkB,OAAO,mBAAmB,SAC9C,QAAO;AAGT,SAAO;GACL,OAAO;GACD;GACP;;CAGH,SAAS,iBAAiB,SAAS;EACjC,IAAI,SAAS;AAEb,MAAI,QAAQ,OAAO,KAAA,EACjB,WAAU,eAAe,MAAM,QAAQ,GAAG;AAG5C,MAAI,QAAQ,UAAU,KAAA,EACpB,WAAU,eAAe,SAAS,QAAQ,MAAM;AAGlD,MAAI,QAAQ,UAAU,KAAA,EACpB,WAAU,eAAe,SAAS,QAAQ,MAAM;AAGlD,MAAI,QAAQ,SAAS,KAAA,EACnB,WAAU;MAEV,WAAU,eAAe,QAAQ,QAAQ,KAAK;AAGhD,SAAO,SAAS;;CAGlB,SAAS,eAAe,MAAM,OAAO;AACnC,SAAO,OAAO,MAAM,CACjB,MAAM,SAAS,CACf,KAAK,SAAS,OAAO,OAAO,OAAO,KAAK,CACxC,KAAK,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const require_runtime = require("../_virtual/_rolldown/runtime.js");
|
|
3
|
+
require("./messages.js");
|
|
4
|
+
const require_lib_deprecate = require("./deprecate.js");
|
|
5
|
+
const require_lib_shared_method = require("./shared-method.js");
|
|
6
|
+
//#region src/lib/shared-class.ts
|
|
7
|
+
var require_shared_class = /* @__PURE__ */ require_runtime.__commonJSMin(((exports, module) => {
|
|
8
|
+
/*!
|
|
9
|
+
* Expose `SharedClass`.
|
|
10
|
+
*/
|
|
11
|
+
const deprecated = require_lib_deprecate("strong-remoting");
|
|
12
|
+
module.exports = SharedClass;
|
|
13
|
+
require("debug")("strong-remoting:shared-class");
|
|
14
|
+
require("util").inherits;
|
|
15
|
+
const extend = Object.assign;
|
|
16
|
+
const SharedMethod = require_lib_shared_method;
|
|
17
|
+
const assert = require("assert");
|
|
18
|
+
/**
|
|
19
|
+
* Create a new `SharedClass` with the given `options`.
|
|
20
|
+
*
|
|
21
|
+
* @param {String} name The `SharedClass` name
|
|
22
|
+
* @param {Function} constructor The `constructor` the `SharedClass` represents
|
|
23
|
+
* @param {Object} options Additional options.
|
|
24
|
+
* @property {Function} ctor The `constructor`
|
|
25
|
+
* @property {Object} http The HTTP settings
|
|
26
|
+
* @class
|
|
27
|
+
*/
|
|
28
|
+
function SharedClass(name, ctor, options) {
|
|
29
|
+
this.name = name || ctor.remoteNamespace;
|
|
30
|
+
this.ctor = ctor;
|
|
31
|
+
this.options = options;
|
|
32
|
+
this._methods = [];
|
|
33
|
+
this._resolvers = [];
|
|
34
|
+
this._disabledMethods = {};
|
|
35
|
+
const http = ctor && ctor.http;
|
|
36
|
+
const defaultHttp = {};
|
|
37
|
+
defaultHttp.path = "/" + this.name;
|
|
38
|
+
if (Array.isArray(http)) {
|
|
39
|
+
this.http = http;
|
|
40
|
+
if (http.length === 0) http.push(defaultHttp);
|
|
41
|
+
} else this.http = extend(defaultHttp, http);
|
|
42
|
+
if (typeof ctor === "function" && ctor.sharedCtor) this.sharedCtor = new SharedMethod(ctor.sharedCtor, "sharedCtor", this);
|
|
43
|
+
assert(this.name, "must include a remoteNamespace when creating a SharedClass");
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get all shared methods belonging to this shared class.
|
|
47
|
+
*
|
|
48
|
+
* @param options {Object}
|
|
49
|
+
* @param options.includeDisabled {Boolean} include all methods, even disabled.
|
|
50
|
+
* @returns {SharedMethod[]} An array of shared methods
|
|
51
|
+
*/
|
|
52
|
+
SharedClass.prototype.methods = function(options) {
|
|
53
|
+
const ctor = this.ctor;
|
|
54
|
+
const methods = [];
|
|
55
|
+
const sc = this;
|
|
56
|
+
const methodByFn = /* @__PURE__ */ new Map();
|
|
57
|
+
const define = _define.bind(sc, methods);
|
|
58
|
+
options = options || {};
|
|
59
|
+
eachRemoteFunctionInObject(ctor, function(fn, name) {
|
|
60
|
+
const sharedMethod = methodByFn.get(fn);
|
|
61
|
+
if (sharedMethod) {
|
|
62
|
+
sharedMethod.addAlias(name);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const method = SharedMethod.fromFunction(fn, name, sc, true);
|
|
66
|
+
methodByFn.set(fn, method);
|
|
67
|
+
methods.push(method);
|
|
68
|
+
});
|
|
69
|
+
eachRemoteFunctionInObject(ctor.prototype, function(fn, name) {
|
|
70
|
+
const sharedMethod = methodByFn.get(fn);
|
|
71
|
+
if (sharedMethod) {
|
|
72
|
+
sharedMethod.addAlias(name);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const method = SharedMethod.fromFunction(fn, name, sc);
|
|
76
|
+
methodByFn.set(fn, method);
|
|
77
|
+
methods.push(method);
|
|
78
|
+
});
|
|
79
|
+
for (let i = 0; i < this._resolvers.length; i++) this._resolvers[i].call(this, define);
|
|
80
|
+
for (let i = 0; i < this._methods.length; i++) methods.push(this._methods[i]);
|
|
81
|
+
if (options.includeDisabled === true) return methods;
|
|
82
|
+
const enabledMethods = [];
|
|
83
|
+
for (let i = 0; i < methods.length; i++) if (sc.isMethodEnabled(methods[i])) enabledMethods.push(methods[i]);
|
|
84
|
+
return enabledMethods;
|
|
85
|
+
};
|
|
86
|
+
SharedClass.prototype.isMethodEnabled = function(sharedMethod) {
|
|
87
|
+
if (!sharedMethod.shared) return false;
|
|
88
|
+
const key = this.getKeyFromMethodNameAndTarget(sharedMethod.name, sharedMethod.isStatic);
|
|
89
|
+
if (this._disabledMethods.hasOwnProperty(key)) return false;
|
|
90
|
+
return true;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Define a shared method with the given name.
|
|
94
|
+
*
|
|
95
|
+
* @param {String} name The method name
|
|
96
|
+
* @param {Object} [options] Set of options used to create a `SharedMethod`.
|
|
97
|
+
* [See the full set of options](#sharedmethod)
|
|
98
|
+
*/
|
|
99
|
+
SharedClass.prototype.defineMethod = function(name, options, fn) {
|
|
100
|
+
return _define.call(this, this._methods, name, options, fn);
|
|
101
|
+
};
|
|
102
|
+
function _define(methods, name, options, fn) {
|
|
103
|
+
options = options || {};
|
|
104
|
+
const sharedMethod = new SharedMethod(fn, name, this, options);
|
|
105
|
+
methods.push(sharedMethod);
|
|
106
|
+
return sharedMethod;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Define a shared method resolver for dynamically defining methods.
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```js
|
|
113
|
+
* // below is a simple example
|
|
114
|
+
* sharedClass.resolve(function(define) {
|
|
115
|
+
* define('myMethod', {
|
|
116
|
+
* accepts: {arg: 'str', type: 'string'},
|
|
117
|
+
* returns: {arg: 'str', type: 'string'}
|
|
118
|
+
* errors: [ { code: 404, message: 'Not Found', responseModel: 'Error' } ]
|
|
119
|
+
* }, myMethod);
|
|
120
|
+
* });
|
|
121
|
+
* function myMethod(str, cb) {
|
|
122
|
+
* cb(null, str);
|
|
123
|
+
* }
|
|
124
|
+
* ```
|
|
125
|
+
*
|
|
126
|
+
* @param {Function} resolver The resolver function.
|
|
127
|
+
*/
|
|
128
|
+
SharedClass.prototype.resolve = function(resolver) {
|
|
129
|
+
this._resolvers.push(resolver);
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* Find a sharedMethod with the given name or function object.
|
|
133
|
+
*
|
|
134
|
+
* @param {String|Function} fn The function or method name
|
|
135
|
+
* @param {Boolean} [isStatic] Required if `fn` is a `String`.
|
|
136
|
+
* Only find a static method with the given name.
|
|
137
|
+
* @returns {SharedMethod}
|
|
138
|
+
*/
|
|
139
|
+
SharedClass.prototype.find = function(fn, isStatic) {
|
|
140
|
+
deprecated("SharedClass.prototype.find is deprecated. Use SharedClass.prototype.findMethodByName instead.");
|
|
141
|
+
return find(this.methods(), fn, isStatic);
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Disable a sharedMethod with the given name or function object.
|
|
145
|
+
*
|
|
146
|
+
* @param {String} fn The function or method name
|
|
147
|
+
* @param {Boolean} isStatic Disable a static or prototype method
|
|
148
|
+
*/
|
|
149
|
+
SharedClass.prototype.disableMethod = function(fn, isStatic) {
|
|
150
|
+
deprecated("SharedClass.prototype.disableMethod is deprecated. Use SharedClass.prototype.disableMethodByName instead.");
|
|
151
|
+
const key = this.getKeyFromMethodNameAndTarget(fn, isStatic);
|
|
152
|
+
this.disableMethodByName(key);
|
|
153
|
+
};
|
|
154
|
+
/**
|
|
155
|
+
* Find a sharedMethod with the given static or prototype method name.
|
|
156
|
+
*
|
|
157
|
+
* @param {String} methodName The method name
|
|
158
|
+
* Find a static or prototype method with the given name.
|
|
159
|
+
* @returns {SharedMethod}
|
|
160
|
+
*/
|
|
161
|
+
SharedClass.prototype.findMethodByName = function(methodName) {
|
|
162
|
+
const methods = this.methods();
|
|
163
|
+
for (let i = 0; i < methods.length; i++) if (methods[i].isDelegateForName(methodName)) return methods[i];
|
|
164
|
+
};
|
|
165
|
+
/**
|
|
166
|
+
* Disable a sharedMethod with the given static or prototype method name.
|
|
167
|
+
*
|
|
168
|
+
* @param {String} methodName The method name
|
|
169
|
+
*/
|
|
170
|
+
SharedClass.prototype.disableMethodByName = function(methodName) {
|
|
171
|
+
const disableMethods = this._disabledMethods;
|
|
172
|
+
const aliasedFn = this.findMethodByName(methodName);
|
|
173
|
+
if (aliasedFn) methodName = this.getKeyFromMethodNameAndTarget(aliasedFn.name, aliasedFn.isStatic);
|
|
174
|
+
disableMethods[methodName] = true;
|
|
175
|
+
};
|
|
176
|
+
/**
|
|
177
|
+
* Get a key for the given method.
|
|
178
|
+
*
|
|
179
|
+
* @param {String} fn The function or method name.
|
|
180
|
+
* @param {Boolean} isStatic True if the method is static.
|
|
181
|
+
*/
|
|
182
|
+
SharedClass.prototype.getKeyFromMethodNameAndTarget = function(name, isStatic) {
|
|
183
|
+
return (isStatic ? "" : "prototype.") + name;
|
|
184
|
+
};
|
|
185
|
+
function find(methods, fn, isStatic) {
|
|
186
|
+
for (let i = 0; i < methods.length; i++) {
|
|
187
|
+
const method = methods[i];
|
|
188
|
+
if (method.isDelegateFor(fn, isStatic)) return method;
|
|
189
|
+
}
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
function eachRemoteFunctionInObject(obj, f) {
|
|
193
|
+
if (!obj) return;
|
|
194
|
+
for (const key in obj) {
|
|
195
|
+
if (key === "super_") continue;
|
|
196
|
+
let fn;
|
|
197
|
+
try {
|
|
198
|
+
fn = obj[key];
|
|
199
|
+
} catch (e) {}
|
|
200
|
+
if (typeof fn === "function" && fn.shared && !fn.modelName) f(fn, key);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}));
|
|
204
|
+
//#endregion
|
|
205
|
+
module.exports = require_shared_class();
|
|
206
|
+
|
|
207
|
+
//# sourceMappingURL=shared-class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-class.js","names":[],"sources":["../../src/lib/shared-class.ts"],"sourcesContent":["// Copyright IBM Corp. 2013,2017. All Rights Reserved.\n// Node module: strong-remoting\n// This file is licensed under the Artistic License 2.0.\n// License text available at https://opensource.org/licenses/Artistic-2.0\n\n// @ts-nocheck\n'use strict';\n\nconst g = require('./messages');\n/*!\n * Expose `SharedClass`.\n */\nconst deprecated = require('./deprecate')('strong-remoting');\n\nmodule.exports = SharedClass;\n\n/*!\n * Module dependencies.\n */\n\nconst debug = require('debug')('strong-remoting:shared-class');\nconst util = require('util');\nconst inherits = util.inherits;\nconst extend = Object.assign;\nconst SharedMethod = require('./shared-method');\nconst assert = require('assert');\n\n/**\n * Create a new `SharedClass` with the given `options`.\n *\n * @param {String} name The `SharedClass` name\n * @param {Function} constructor The `constructor` the `SharedClass` represents\n * @param {Object} options Additional options.\n * @property {Function} ctor The `constructor`\n * @property {Object} http The HTTP settings\n * @class\n */\n\nfunction SharedClass(name, ctor, options) {\n this.name = name || ctor.remoteNamespace;\n this.ctor = ctor;\n this.options = options;\n this._methods = [];\n this._resolvers = [];\n this._disabledMethods = {};\n const http = ctor && ctor.http;\n\n const defaultHttp = {};\n defaultHttp.path = '/' + this.name;\n\n if (Array.isArray(http)) {\n // use array as is\n this.http = http;\n if (http.length === 0) {\n http.push(defaultHttp);\n }\n } else {\n // set http.path using the name unless it is defined\n this.http = extend(defaultHttp, http);\n }\n\n if (typeof ctor === 'function' && ctor.sharedCtor) {\n // TODO(schoon) - Can we fall back to using the ctor as a method directly?\n // Without that, all remote methods have to be two levels deep, e.g.\n // `/meta/routes`.\n\n this.sharedCtor = new SharedMethod(ctor.sharedCtor, 'sharedCtor', this);\n }\n assert(this.name, 'must include a remoteNamespace when creating a SharedClass');\n}\n\n/**\n * Get all shared methods belonging to this shared class.\n *\n * @param options {Object}\n * @param options.includeDisabled {Boolean} include all methods, even disabled.\n * @returns {SharedMethod[]} An array of shared methods\n */\n\nSharedClass.prototype.methods = function (options) {\n const ctor = this.ctor;\n const methods = [];\n const sc = this;\n const methodByFn = new Map();\n const define = _define.bind(sc, methods);\n\n options = options || {};\n\n // static methods\n eachRemoteFunctionInObject(ctor, function (fn, name) {\n const sharedMethod = methodByFn.get(fn);\n if (sharedMethod) {\n sharedMethod.addAlias(name);\n return;\n }\n\n const method = SharedMethod.fromFunction(fn, name, sc, true);\n methodByFn.set(fn, method);\n methods.push(method);\n });\n\n // instance methods\n eachRemoteFunctionInObject(ctor.prototype, function (fn, name) {\n const sharedMethod = methodByFn.get(fn);\n if (sharedMethod) {\n sharedMethod.addAlias(name);\n return;\n }\n\n const method = SharedMethod.fromFunction(fn, name, sc);\n methodByFn.set(fn, method);\n methods.push(method);\n });\n\n // resolvers\n for (let i = 0; i < this._resolvers.length; i++) {\n this._resolvers[i].call(this, define);\n }\n\n for (let i = 0; i < this._methods.length; i++) {\n methods.push(this._methods[i]);\n }\n\n if (options.includeDisabled === true) {\n return methods;\n }\n\n const enabledMethods = [];\n for (let i = 0; i < methods.length; i++) {\n if (sc.isMethodEnabled(methods[i])) {\n enabledMethods.push(methods[i]);\n }\n }\n\n return enabledMethods;\n};\n\nSharedClass.prototype.isMethodEnabled = function (sharedMethod) {\n if (!sharedMethod.shared) return false;\n\n const key = this.getKeyFromMethodNameAndTarget(sharedMethod.name, sharedMethod.isStatic);\n\n if (this._disabledMethods.hasOwnProperty(key)) {\n return false;\n }\n\n return true;\n};\n\n/**\n * Define a shared method with the given name.\n *\n * @param {String} name The method name\n * @param {Object} [options] Set of options used to create a `SharedMethod`.\n * [See the full set of options](#sharedmethod)\n */\n\nSharedClass.prototype.defineMethod = function (name, options, fn) {\n return _define.call(this, this._methods, name, options, fn);\n};\n\nfunction _define(methods, name, options, fn) {\n options = options || {};\n const sharedMethod = new SharedMethod(fn, name, this, options);\n methods.push(sharedMethod);\n return sharedMethod;\n}\n\n/**\n * Define a shared method resolver for dynamically defining methods.\n *\n * @example\n * ```js\n * // below is a simple example\n * sharedClass.resolve(function(define) {\n * define('myMethod', {\n * accepts: {arg: 'str', type: 'string'},\n * returns: {arg: 'str', type: 'string'}\n * errors: [ { code: 404, message: 'Not Found', responseModel: 'Error' } ]\n * }, myMethod);\n * });\n * function myMethod(str, cb) {\n * cb(null, str);\n * }\n * ```\n *\n * @param {Function} resolver The resolver function.\n */\n\nSharedClass.prototype.resolve = function (resolver) {\n this._resolvers.push(resolver);\n};\n\n/**\n * Find a sharedMethod with the given name or function object.\n *\n * @param {String|Function} fn The function or method name\n * @param {Boolean} [isStatic] Required if `fn` is a `String`.\n * Only find a static method with the given name.\n * @returns {SharedMethod}\n */\n\nSharedClass.prototype.find = function (fn, isStatic) {\n deprecated(\n 'SharedClass.prototype.find is deprecated. ' +\n 'Use SharedClass.prototype.findMethodByName instead.',\n );\n const methods = this.methods();\n return find(methods, fn, isStatic);\n};\n\n/**\n * Disable a sharedMethod with the given name or function object.\n *\n * @param {String} fn The function or method name\n * @param {Boolean} isStatic Disable a static or prototype method\n */\n\nSharedClass.prototype.disableMethod = function (fn, isStatic) {\n deprecated(\n 'SharedClass.prototype.disableMethod is deprecated. ' +\n 'Use SharedClass.prototype.disableMethodByName instead.',\n );\n const key = this.getKeyFromMethodNameAndTarget(fn, isStatic);\n this.disableMethodByName(key);\n};\n\n/**\n * Find a sharedMethod with the given static or prototype method name.\n *\n * @param {String} methodName The method name\n * Find a static or prototype method with the given name.\n * @returns {SharedMethod}\n */\n\nSharedClass.prototype.findMethodByName = function (methodName) {\n const methods = this.methods();\n for (let i = 0; i < methods.length; i++) {\n if (methods[i].isDelegateForName(methodName)) {\n return methods[i];\n }\n }\n\n return undefined;\n};\n\n/**\n * Disable a sharedMethod with the given static or prototype method name.\n *\n * @param {String} methodName The method name\n */\n\nSharedClass.prototype.disableMethodByName = function (methodName) {\n const disableMethods = this._disabledMethods;\n\n // In case methodName is an alias, recover the aliased method name\n const aliasedFn = this.findMethodByName(methodName);\n if (aliasedFn) {\n methodName = this.getKeyFromMethodNameAndTarget(aliasedFn.name, aliasedFn.isStatic);\n }\n\n disableMethods[methodName] = true;\n};\n\n/**\n * Get a key for the given method.\n *\n * @param {String} fn The function or method name.\n * @param {Boolean} isStatic True if the method is static.\n */\n\nSharedClass.prototype.getKeyFromMethodNameAndTarget = function (name, isStatic) {\n return (isStatic ? '' : 'prototype.') + name;\n};\n\nfunction find(methods, fn, isStatic) {\n for (let i = 0; i < methods.length; i++) {\n const method = methods[i];\n if (method.isDelegateFor(fn, isStatic)) return method;\n }\n return null;\n}\n\nfunction eachRemoteFunctionInObject(obj, f) {\n if (!obj) return;\n\n for (const key in obj) {\n if (key === 'super_') {\n // Skip super class\n continue;\n }\n let fn;\n\n try {\n fn = obj[key];\n } catch (e) {}\n\n // HACK: [rfeng] Do not expose model constructors\n // We have the following usage to set other model classes as properties\n // User.email = Email;\n // User.accessToken = AccessToken;\n // Both Email and AccessToken can have shared flag set to true\n if (typeof fn === 'function' && fn.shared && !fn.modelName) {\n f(fn, key);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|