@vsaas/loopback 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.
Files changed (69) hide show
  1. package/LICENSE +25 -0
  2. package/README.md +91 -0
  3. package/common/models/README.md +109 -0
  4. package/common/models/access-token.json +37 -0
  5. package/common/models/acl.json +17 -0
  6. package/common/models/application.json +130 -0
  7. package/common/models/change.json +25 -0
  8. package/common/models/checkpoint.json +14 -0
  9. package/common/models/email.json +11 -0
  10. package/common/models/key-value-model.json +4 -0
  11. package/common/models/role-mapping.json +26 -0
  12. package/common/models/role.json +30 -0
  13. package/common/models/scope.json +14 -0
  14. package/common/models/user.json +118 -0
  15. package/dist/_virtual/_rolldown/runtime.cjs +32 -0
  16. package/dist/common/models/access-token.cjs +144 -0
  17. package/dist/common/models/access-token2.cjs +43 -0
  18. package/dist/common/models/acl.cjs +428 -0
  19. package/dist/common/models/acl2.cjs +27 -0
  20. package/dist/common/models/application.cjs +100 -0
  21. package/dist/common/models/application2.cjs +118 -0
  22. package/dist/common/models/change.cjs +404 -0
  23. package/dist/common/models/change2.cjs +25 -0
  24. package/dist/common/models/checkpoint.cjs +43 -0
  25. package/dist/common/models/checkpoint2.cjs +18 -0
  26. package/dist/common/models/email.cjs +18 -0
  27. package/dist/common/models/email2.cjs +30 -0
  28. package/dist/common/models/key-value-model.cjs +140 -0
  29. package/dist/common/models/key-value-model2.cjs +14 -0
  30. package/dist/common/models/role-mapping.cjs +57 -0
  31. package/dist/common/models/role-mapping2.cjs +34 -0
  32. package/dist/common/models/role.cjs +396 -0
  33. package/dist/common/models/role2.cjs +38 -0
  34. package/dist/common/models/scope.cjs +30 -0
  35. package/dist/common/models/scope2.cjs +21 -0
  36. package/dist/common/models/user.cjs +810 -0
  37. package/dist/common/models/user2.cjs +118 -0
  38. package/dist/index.cjs +16 -0
  39. package/dist/lib/access-context.cjs +228 -0
  40. package/dist/lib/application.cjs +450 -0
  41. package/dist/lib/builtin-models.cjs +60 -0
  42. package/dist/lib/configure-shared-methods.cjs +41 -0
  43. package/dist/lib/connectors/base-connector.cjs +23 -0
  44. package/dist/lib/connectors/mail-direct-transport.cjs +375 -0
  45. package/dist/lib/connectors/mail-stub-transport.cjs +86 -0
  46. package/dist/lib/connectors/mail.cjs +128 -0
  47. package/dist/lib/connectors/memory.cjs +19 -0
  48. package/dist/lib/current-context.cjs +22 -0
  49. package/dist/lib/globalize.cjs +29 -0
  50. package/dist/lib/loopback.cjs +313 -0
  51. package/dist/lib/model.cjs +1009 -0
  52. package/dist/lib/persisted-model.cjs +1835 -0
  53. package/dist/lib/registry.cjs +291 -0
  54. package/dist/lib/runtime.cjs +25 -0
  55. package/dist/lib/server-app.cjs +231 -0
  56. package/dist/lib/utils.cjs +154 -0
  57. package/dist/package.cjs +124 -0
  58. package/dist/server/middleware/context.cjs +7 -0
  59. package/dist/server/middleware/error-handler.cjs +6 -0
  60. package/dist/server/middleware/favicon.cjs +13 -0
  61. package/dist/server/middleware/rest.cjs +44 -0
  62. package/dist/server/middleware/static.cjs +14 -0
  63. package/dist/server/middleware/status.cjs +28 -0
  64. package/dist/server/middleware/token.cjs +66 -0
  65. package/dist/server/middleware/url-not-found.cjs +20 -0
  66. package/favicon.ico +0 -0
  67. package/package.json +121 -0
  68. package/templates/reset-form.ejs +3 -0
  69. package/templates/verify.ejs +9 -0
@@ -0,0 +1,313 @@
1
+ "use strict";
2
+ const require_runtime$1 = require("../_virtual/_rolldown/runtime.cjs");
3
+ const require_lib_server_app = require("./server-app.cjs");
4
+ const require_lib_runtime = require("./runtime.cjs");
5
+ const require_lib_registry = require("./registry.cjs");
6
+ const require_lib_application = require("./application.cjs");
7
+ const require_lib_configure_shared_methods = require("./configure-shared-methods.cjs");
8
+ const require_package$1 = require("../package.cjs");
9
+ const require_lib_builtin_models = require("./builtin-models.cjs");
10
+ const require_lib_current_context = require("./current-context.cjs");
11
+ //#region src/lib/loopback.ts
12
+ /*!
13
+ * Module dependencies.
14
+ */
15
+ var require_loopback = /* @__PURE__ */ require_runtime$1.__commonJSMin(((exports, module) => {
16
+ const path = require("path");
17
+ const express = require("express");
18
+ const loopbackExpress = require_lib_server_app;
19
+ const runtime = require_lib_runtime;
20
+ const proto = require_lib_application;
21
+ const fs = require("fs");
22
+ const ejs = require("ejs");
23
+ require("assert");
24
+ const Registry = require_lib_registry;
25
+ const juggler = require("@vsaas/loopback-datasource-juggler");
26
+ const configureSharedMethods = require_lib_configure_shared_methods;
27
+ /**
28
+ * LoopBack core module. It provides static properties and
29
+ * methods to create models and data sources. The module itself is a function
30
+ * that creates loopback `app`. For example:
31
+ *
32
+ * ```js
33
+ * var loopback = require('loopback');
34
+ * var app = loopback();
35
+ * ```
36
+ *
37
+ * @property {String} version Version of LoopBack framework. Static read-only property.
38
+ * @property {Boolean} isBrowser True if running in a browser environment; false otherwise. Static read-only property.
39
+ * @property {Boolean} isServer True if running in a server environment; false otherwise. Static read-only property.
40
+ * @property {Registry} registry The global `Registry` object.
41
+ * @property {String} faviconFile Path to a default favicon shipped with LoopBack.
42
+ * Use as follows: `app.use(require('serve-favicon')(loopback.faviconFile));`
43
+ * @class loopback
44
+ * @header loopback
45
+ */
46
+ const loopback = module.exports = createApplication;
47
+ /*!
48
+ * Framework version.
49
+ */
50
+ loopback.version = require_package$1.default.version;
51
+ loopback.registry = new Registry();
52
+ runtime.loopback = loopback;
53
+ Object.defineProperties(loopback, {
54
+ Model: { get: function() {
55
+ return this.registry.getModel("Model");
56
+ } },
57
+ PersistedModel: { get: function() {
58
+ return this.registry.getModel("PersistedModel");
59
+ } },
60
+ defaultDataSources: { get: function() {
61
+ return this.registry.defaultDataSources;
62
+ } },
63
+ modelBuilder: { get: function() {
64
+ return this.registry.modelBuilder;
65
+ } }
66
+ });
67
+ /*!
68
+ * Create an loopback application.
69
+ *
70
+ * @return {Function}
71
+ * @api public
72
+ */
73
+ function createApplication(options) {
74
+ const app = loopbackExpress();
75
+ Object.assign(app, proto);
76
+ app.loopback = loopback;
77
+ app.on("modelRemoted", function() {
78
+ app.models().forEach(function(Model) {
79
+ if (!Model.config) return;
80
+ configureSharedMethods(Model, app.get("remoting"), Model.config);
81
+ });
82
+ });
83
+ app.models = function() {
84
+ return proto.models.apply(this, arguments);
85
+ };
86
+ app.datasources = app.dataSources = {};
87
+ app.connectors = {};
88
+ app.connector("memory", loopback.Memory);
89
+ app.connector("remote", loopback.Remote);
90
+ if (loopback.isServer) app.connector("kv-memory", require("@vsaas/loopback-datasource-juggler/connectors/kv-memory"));
91
+ if (loopback.localRegistry || options && options.localRegistry === true) {
92
+ const registry = app.registry = new Registry();
93
+ if (options && options.loadBuiltinModels === true) require_lib_builtin_models(registry);
94
+ } else app.registry = loopback.registry;
95
+ return app;
96
+ }
97
+ function mixin(source) {
98
+ for (const key in source) {
99
+ const desc = Object.getOwnPropertyDescriptor(source, key);
100
+ if (!desc) continue;
101
+ Object.defineProperty(loopback, key, desc);
102
+ }
103
+ }
104
+ mixin(runtime);
105
+ /*!
106
+ * Expose static express methods like `express.Router`.
107
+ */
108
+ mixin(express);
109
+ /*!
110
+ * Expose additional loopback middleware
111
+ * for example `loopback.configure` etc.
112
+ *
113
+ * ***only in node***
114
+ */
115
+ if (loopback.isServer) {
116
+ const middlewareDir = path.join(__dirname, "..", "server", "middleware");
117
+ fs.readdirSync(middlewareDir).filter(function(file) {
118
+ return file.match(/\.cjs$/);
119
+ }).forEach(function(m) {
120
+ loopback[m.replace(/\.cjs$/, "")] = require(path.join(middlewareDir, m));
121
+ });
122
+ loopback.urlNotFound = loopback["url-not-found"];
123
+ delete loopback["url-not-found"];
124
+ loopback.errorHandler = loopback["error-handler"];
125
+ delete loopback["error-handler"];
126
+ }
127
+ if (loopback.isServer)
128
+ /*!
129
+ * Path to a default favicon shipped with LoopBack.
130
+ *
131
+ * **Example**
132
+ *
133
+ * ```js
134
+ * app.use(require('serve-favicon')(loopback.faviconFile));
135
+ * ```
136
+ */
137
+ loopback.faviconFile = path.resolve(getPackageRoot(), "favicon.ico");
138
+ /**
139
+ * Add a remote method to a model.
140
+ * @param {Function} fn
141
+ * @param {Object} options (optional)
142
+ */
143
+ loopback.remoteMethod = function(fn, options) {
144
+ fn.shared = true;
145
+ if (typeof options === "object") Object.keys(options).forEach(function(key) {
146
+ fn[key] = options[key];
147
+ });
148
+ fn.http = fn.http || { verb: "get" };
149
+ };
150
+ /**
151
+ * Create a template helper.
152
+ *
153
+ * var render = loopback.template('foo.ejs');
154
+ * var html = render({foo: 'bar'});
155
+ *
156
+ * @param {String} file Path to the template file.
157
+ * @returns {Function}
158
+ */
159
+ loopback.template = function(file) {
160
+ const templates = this._templates || (this._templates = {});
161
+ let render = templates[file];
162
+ if (!render) {
163
+ render = ejs.compile(fs.readFileSync(file, "utf8"), { filename: file });
164
+ templates[file] = render;
165
+ }
166
+ return render;
167
+ };
168
+ require_lib_current_context(loopback);
169
+ /**
170
+ * Create a named vanilla JavaScript class constructor with an attached
171
+ * set of properties and options.
172
+ *
173
+ * This function comes with two variants:
174
+ * * `loopback.createModel(name, properties, options)`
175
+ * * `loopback.createModel(config)`
176
+ *
177
+ * In the second variant, the parameters `name`, `properties` and `options`
178
+ * are provided in the config object. Any additional config entries are
179
+ * interpreted as `options`, i.e. the following two configs are identical:
180
+ *
181
+ * ```js
182
+ * { name: 'Customer', base: 'User' }
183
+ * { name: 'Customer', options: { base: 'User' } }
184
+ * ```
185
+ *
186
+ * **Example**
187
+ *
188
+ * Create an `Author` model using the three-parameter variant:
189
+ *
190
+ * ```js
191
+ * loopback.createModel(
192
+ * 'Author',
193
+ * {
194
+ * firstName: 'string',
195
+ * lastName: 'string'
196
+ * },
197
+ * {
198
+ * relations: {
199
+ * books: {
200
+ * model: 'Book',
201
+ * type: 'hasAndBelongsToMany'
202
+ * }
203
+ * }
204
+ * }
205
+ * );
206
+ * ```
207
+ *
208
+ * Create the same model using a config object:
209
+ *
210
+ * ```js
211
+ * loopback.createModel({
212
+ * name: 'Author',
213
+ * properties: {
214
+ * firstName: 'string',
215
+ * lastName: 'string'
216
+ * },
217
+ * relations: {
218
+ * books: {
219
+ * model: 'Book',
220
+ * type: 'hasAndBelongsToMany'
221
+ * }
222
+ * }
223
+ * });
224
+ * ```
225
+ *
226
+ * @param {String} name Unique name.
227
+ * @param {Object} properties
228
+ * @param {Object} options (optional)
229
+ *
230
+ * @header loopback.createModel
231
+ */
232
+ loopback.createModel = function(name, properties, options) {
233
+ return this.registry.createModel.apply(this.registry, arguments);
234
+ };
235
+ /**
236
+ * Alter an existing Model class.
237
+ * @param {Model} ModelCtor The model constructor to alter.
238
+ * @options {Object} config Additional configuration to apply
239
+ * @property {DataSource} dataSource Attach the model to a dataSource.
240
+ * @property {Object} [relations] Model relations to add/update.
241
+ *
242
+ * @header loopback.configureModel(ModelCtor, config)
243
+ */
244
+ loopback.configureModel = function(ModelCtor, config) {
245
+ return this.registry.configureModel.apply(this.registry, arguments);
246
+ };
247
+ /**
248
+ * Look up a model class by name from all models created by
249
+ * `loopback.createModel()`
250
+ * @param {String} modelName The model name
251
+ * @returns {Model} The model class
252
+ *
253
+ * @header loopback.findModel(modelName)
254
+ */
255
+ loopback.findModel = function(modelName) {
256
+ return this.registry.findModel.apply(this.registry, arguments);
257
+ };
258
+ /**
259
+ * Look up a model class by name from all models created by
260
+ * `loopback.createModel()`. Throw an error when no such model exists.
261
+ *
262
+ * @param {String} modelName The model name
263
+ * @returns {Model} The model class
264
+ *
265
+ * @header loopback.getModel(modelName)
266
+ */
267
+ loopback.getModel = function(modelName) {
268
+ return this.registry.getModel.apply(this.registry, arguments);
269
+ };
270
+ /**
271
+ * Look up a model class by the base model class.
272
+ * The method can be used by LoopBack
273
+ * to find configured models in models.json over the base model.
274
+ * @param {Model} modelType The base model class
275
+ * @returns {Model} The subclass if found or the base class
276
+ *
277
+ * @header loopback.getModelByType(modelType)
278
+ */
279
+ loopback.getModelByType = function(modelType) {
280
+ return this.registry.getModelByType.apply(this.registry, arguments);
281
+ };
282
+ /**
283
+ * Create a data source with passing the provided options to the connector.
284
+ *
285
+ * @param {String} name Optional name.
286
+ * @options {Object} options Data Source options
287
+ * @property {Object} connector LoopBack connector.
288
+ * @property {*} [*] Other connector properties.
289
+ * See the relevant connector documentation.
290
+ */
291
+ loopback.createDataSource = function(name, options) {
292
+ return this.registry.createDataSource.apply(this.registry, arguments);
293
+ };
294
+ /**
295
+ * Get an in-memory data source. Use one if it already exists.
296
+ *
297
+ * @param {String} [name] The name of the data source.
298
+ * If not provided, the `'default'` is used.
299
+ */
300
+ loopback.memory = function(name) {
301
+ return this.registry.memory.apply(this.registry, arguments);
302
+ };
303
+ /*!
304
+ * Built in models / services
305
+ */
306
+ require_lib_builtin_models(loopback);
307
+ loopback.DataSource = juggler.DataSource;
308
+ function getPackageRoot() {
309
+ return path.join(__dirname, "..", "..");
310
+ }
311
+ }));
312
+ //#endregion
313
+ module.exports = require_loopback();