spice-js 2.6.22 → 2.6.23

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.
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ var _path = _interopRequireDefault(require("path"));
4
+
5
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
+
7
+ spice.routers = {};
8
+
9
+ var paths = _path.default.join(spice.root_path, "schema_extenders");
10
+
11
+ spice.schemaExtenders = {};
12
+
13
+ require("fs").readdirSync(paths).forEach(function (file) {
14
+ if (file != "index.js") {
15
+ var extender = require(_path.default.join(paths, file));
16
+
17
+ spice.schemaExtenders[file.split(".")[0]] = extender;
18
+ spice.schema_extenders = spice.schemaExtenders;
19
+ }
20
+ });
@@ -15,7 +15,7 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try
15
15
 
16
16
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
17
17
 
18
- var ordered_modules = ["database", "map", "logger", "error"];
18
+ var ordered_modules = ["schema_extenders", "database", "map", "logger", "error"];
19
19
  var last_modules = ["views", "routes"];
20
20
 
21
21
  function load() {
@@ -117,7 +117,55 @@ class SpiceModel {
117
117
  return returnVal;
118
118
  }
119
119
 
120
- args.props = removeDynamicProps(args.props);
120
+ function applySchemaOverrides(props, resource) {
121
+ spice.schema_extenders = spice.schema_extenders || [];
122
+
123
+ function applyExtenderModifier(prop, resource, extender) {
124
+ if (extender.modifier) {
125
+ return extender.modifier(prop, resource);
126
+ }
127
+
128
+ return prop;
129
+ }
130
+
131
+ function hasExtender(resource, prop, extender) {
132
+ if (extender.selector(prop, resource)) {
133
+ return true;
134
+ }
135
+
136
+ return false;
137
+ }
138
+
139
+ function resourceHasExtender(resource, extender) {
140
+ return extender.resource.includes(resource) || extender.resource.includes("*");
141
+ }
142
+
143
+ for (var file_name in spice.schema_extenders) {
144
+ var extender = spice.schema_extenders[file_name];
145
+
146
+ if (resourceHasExtender(resource, extender)) {
147
+ console.log("Resource:", resource);
148
+
149
+ for (var j in props) {
150
+ if (hasExtender(resource, props[j], extender)) {
151
+ console.log("Modifying Prop:", props[j]);
152
+ props[j] = applyExtenderModifier(props[j], resource, extender);
153
+ console.log("Modified Prop", props[j]);
154
+ }
155
+ }
156
+
157
+ if (extender == null ? void 0 : extender.creator) {
158
+ console.log("Applying Creator:", resource);
159
+ props = _.merge(props, extender.creator(resource));
160
+ }
161
+ }
162
+
163
+ return props;
164
+ }
165
+ } //console.log("Applying Overrides to :", this.collection,'||', args.collection)
166
+
167
+
168
+ args.props = applySchemaOverrides(removeDynamicProps(args.props), args.collection);
121
169
  this[_props] = args.props;
122
170
 
123
171
  for (var i in args.props) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spice-js",
3
- "version": "2.6.22",
3
+ "version": "2.6.23",
4
4
  "description": "spice",
5
5
  "main": "build/index.js",
6
6
  "repository": {
@@ -0,0 +1,15 @@
1
+ import path from "path";
2
+
3
+ spice.routers = {};
4
+
5
+ let paths = path.join(spice.root_path, "schema_extenders");
6
+ spice.schemaExtenders = {};
7
+ require("fs")
8
+ .readdirSync(paths)
9
+ .forEach(function (file) {
10
+ if (file != "index.js") {
11
+ let extender = require(path.join(paths, file));
12
+ spice.schemaExtenders[file.split(".")[0]] = extender;
13
+ spice.schema_extenders = spice.schemaExtenders;
14
+ }
15
+ });
@@ -2,7 +2,13 @@ import path from "path";
2
2
  import fs from "fs";
3
3
  import _ from "lodash";
4
4
 
5
- let ordered_modules = ["database", "map", "logger", "error"];
5
+ let ordered_modules = [
6
+ "schema_extenders",
7
+ "database",
8
+ "map",
9
+ "logger",
10
+ "error",
11
+ ];
6
12
  let last_modules = ["views", "routes"];
7
13
  export async function load() {
8
14
  try {
@@ -102,7 +102,55 @@ export default class SpiceModel {
102
102
  }
103
103
  return returnVal;
104
104
  }
105
- args.props = removeDynamicProps(args.props);
105
+
106
+ function applySchemaOverrides(props, resource) {
107
+ spice.schema_extenders = spice.schema_extenders || [];
108
+
109
+ function applyExtenderModifier(prop, resource, extender) {
110
+ if (extender.modifier) {
111
+ return extender.modifier(prop, resource);
112
+ }
113
+ return prop;
114
+ }
115
+
116
+ function hasExtender(resource, prop, extender) {
117
+ if (extender.selector(prop, resource)) {
118
+ return true;
119
+ }
120
+ return false;
121
+ }
122
+
123
+ function resourceHasExtender(resource, extender) {
124
+ return (
125
+ extender.resource.includes(resource) ||
126
+ extender.resource.includes("*")
127
+ );
128
+ }
129
+
130
+ for (let file_name in spice.schema_extenders) {
131
+ let extender = spice.schema_extenders[file_name];
132
+ if (resourceHasExtender(resource, extender)) {
133
+ console.log("Resource:", resource);
134
+ for (let j in props) {
135
+ if (hasExtender(resource, props[j], extender)) {
136
+ console.log("Modifying Prop:", props[j]);
137
+ props[j] = applyExtenderModifier(props[j], resource, extender);
138
+ console.log("Modified Prop", props[j]);
139
+ }
140
+ }
141
+ if (extender?.creator) {
142
+ console.log("Applying Creator:", resource);
143
+ props = _.merge(props, extender.creator(resource));
144
+ }
145
+ }
146
+ return props;
147
+ }
148
+ }
149
+ //console.log("Applying Overrides to :", this.collection,'||', args.collection)
150
+ args.props = applySchemaOverrides(
151
+ removeDynamicProps(args.props),
152
+ args.collection
153
+ );
106
154
  this[_props] = args.props;
107
155
  for (let i in args.props) {
108
156
  if (args.args != undefined) {