spice-js 2.6.22 → 2.6.24

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,50 @@ 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
+ for (var j in props) {
148
+ if (hasExtender(resource, props[j], extender)) {
149
+ props[j] = applyExtenderModifier(props[j], resource, extender);
150
+ }
151
+ }
152
+
153
+ if (extender == null ? void 0 : extender.creator) {
154
+ props = _.merge(props, extender.creator(resource));
155
+ }
156
+ }
157
+
158
+ return props;
159
+ }
160
+ } //console.log("Applying Overrides to :", this.collection,'||', args.collection)
161
+
162
+
163
+ args.props = applySchemaOverrides(removeDynamicProps(args.props), args.collection);
121
164
  this[_props] = args.props;
122
165
 
123
166
  for (var i in args.props) {
@@ -732,9 +775,16 @@ class SpiceModel {
732
775
  var _this9 = this;
733
776
 
734
777
  return _asyncToGenerator(function* () {
778
+ if (args === void 0) {
779
+ args = {};
780
+ }
781
+
735
782
  try {
736
783
  var form;
737
784
  _this9.created_at = new SDate().now();
785
+ args = _.defaults(args, {
786
+ id_prefix: _this9.type
787
+ });
738
788
 
739
789
  if (args.body) {
740
790
  form = _.defaults({}, args.body);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spice-js",
3
- "version": "2.6.22",
3
+ "version": "2.6.24",
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
+
134
+ for (let j in props) {
135
+ if (hasExtender(resource, props[j], extender)) {
136
+
137
+ props[j] = applyExtenderModifier(props[j], resource, extender);
138
+
139
+ }
140
+ }
141
+ if (extender?.creator) {
142
+
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) {
@@ -649,10 +697,11 @@ export default class SpiceModel {
649
697
  }
650
698
  }
651
699
 
652
- async create(args) {
700
+ async create(args = {}) {
653
701
  try {
654
702
  let form;
655
703
  this.created_at = new SDate().now();
704
+ args = _.defaults(args, { id_prefix: this.type });
656
705
  if (args.body) {
657
706
  form = _.defaults({}, args.body);
658
707
  form.created_at = this.created_at;