manyfest 1.0.16 → 1.0.18

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 @@
1
+ > 0.01%
@@ -0,0 +1 @@
1
+ > 0.01%
@@ -0,0 +1 @@
1
+ since 2018
@@ -0,0 +1,11 @@
1
+ {
2
+ "EntrypointInputSourceFile": "./source/Manyfest-Browser-Shim.js",
3
+
4
+ "LibraryObjectName": "Manyfest",
5
+
6
+ "LibraryOutputFolder": "./dist/",
7
+
8
+ "LibraryUniminifiedFileName": "manyfest.compatible.js",
9
+
10
+ "LibraryMinifiedFileName": "manyfest.compatible.min.js"
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "EntrypointInputSourceFile": "./source/Manyfest-Browser-Shim.js",
3
+
4
+ "LibraryObjectName": "Manyfest",
5
+
6
+ "LibraryOutputFolder": "./dist/",
7
+
8
+ "LibraryUniminifiedFileName": "manyfest.compatible.js",
9
+
10
+ "LibraryMinifiedFileName": "manyfest.compatible.min.js"
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "EntrypointInputSourceFile": "./source/Manyfest-Browser-Shim.js",
3
+
4
+ "LibraryObjectName": "Manyfest",
5
+
6
+ "LibraryOutputFolder": "./dist/",
7
+
8
+ "LibraryUniminifiedFileName": "manyfest.js",
9
+
10
+ "LibraryMinifiedFileName": "manyfest.min.js"
11
+ }
package/gulpfile.js CHANGED
@@ -1,62 +1,164 @@
1
1
  'use strict';
2
2
 
3
+ /*
4
+ After hours of reading and trying various ways of using gulp-env, environment variables
5
+ and babel browesrslistrc / package.json environments it is clear that the state of using
6
+ these tools is a mess. There are ways of getting it to work but none of them feel like
7
+ they will work well in the long term (all of the examples seem to be in bands of about
8
+ a year or two of working before the pattern changes entirely).
9
+
10
+ WHY did we need such a crazy compatible version? wkhtmltopdf is why. It uses a very
11
+ old incompatible version of the QT browser.
12
+
13
+ Therefore, we will use a very old and simple method.
14
+
15
+ 1) There is a config file (gulpfile-config.json), documented here, describing the inputs and outputs for the build operation.
16
+
17
+ const _CONFIG = (
18
+ {
19
+ // The input source file that should be passed to browserify:
20
+ // (if you need to auto-instantiate an object, for instance)
21
+ EntrypointInputSourceFile: `${__dirname}/source/Fable-Browser-Shim.js`,
22
+
23
+ // The name of the packaged object to be passed to browserify:
24
+ // (browserify sets this to global scope and window.SOMEOBJECTNAMEHERE where SOMEOBJECTNAMEHERE is the string below)
25
+ LibraryObjectName: `Fable`,
26
+
27
+ // The folder to write the library files and maps out to:
28
+ LibraryOutputFolder: `${__dirname}/dist/`,
29
+
30
+ // The name of the unminified version of the packaged library, for easy debugging:
31
+ LibraryUniminifiedFileName: `fable.js`,
32
+
33
+ // The name of the minified version of the packaged library, for production release:
34
+ LibraryMinifiedFileName: `fable.min.js`
35
+ });
36
+
37
+ 2) We are using a .browserslistrc file... this is what tells gulp-babel, through the
38
+ magic of the @babel/preset-env library, how to transpile the library into a compatible
39
+ enough format for our targets.
40
+
41
+ For example as of writing this, there are two targets we want:
42
+
43
+ * Modern browsers in the last five years, expressed as a .browserslistrc with the string "since 2018"
44
+ * Very old janky browsers expressed as a .browserslistrc with the string "> 0.01%"
45
+ ... which is interpreted as anything more than 0.01% of browsers in existence or something like that
46
+
47
+ 3) Because we want multiple outputs, and, the tools do fine if we want one output but some of
48
+ the toolchain doesn't like making different targets well, we're just going to have multiple
49
+ configurations and .browserslistrc files. So if our spec above says we need a ".browserslistrc"
50
+ file and a "gulpfile-config.json", we're going to make the following two sets of configuration:
51
+
52
+ * .browserslistrc_default, .gulpfile-config_default.json
53
+ * .browserslistrc_compatible, .gulpfile-config_compatible.json
54
+
55
+ 4) We will copy, synchronously, these files to where the rest of our toolchain expects
56
+ them, before we begin the build. This will be done by looking at the GULP_CUSTOM_BUILD_TARGET
57
+ environment variable. This allows us to create new targets to experiment by copying a couple files,
58
+ jimmying the settings and setting an environment variable before running the pipeline.
59
+
60
+ 5) We will run the toolchain and it will happily think it's just doing a single build and kinda work.
61
+
62
+ */
63
+ // BEGINNING OF STEP 3 and STEP 4 ABOVE
64
+ const libFS = require('fs');
65
+ const _GULP_CUSTOM_BUILD_TARGET = (typeof(process.env.GULP_CUSTOM_BUILD_TARGET) == 'undefined') ? 'default' : process.env.GULP_CUSTOM_BUILD_TARGET;
66
+ console.log(`--> Gulp custom build target set to: [${_GULP_CUSTOM_BUILD_TARGET}]`);
67
+ const _GULP_CONFIG = `./gulpfile-config_${_GULP_CUSTOM_BUILD_TARGET}.json`;
68
+ const _GULP_CONFIG_TARGET = `./gulpfile-config.json`;
69
+ console.log(` : Environment set gulp config [${_GULP_CONFIG}] will be copied to [${_GULP_CONFIG_TARGET}]`);
70
+ if (!libFS.existsSync(`./${_GULP_CONFIG}`))
71
+ {
72
+ console.log(`!!!> Enviromnent set gulp config doesn't exist!`);
73
+ process.exit(1);
74
+ }
75
+ else
76
+ {
77
+ libFS.copyFileSync(_GULP_CONFIG, _GULP_CONFIG_TARGET);
78
+ console.log(` > Environment Gulp Config copied`);
79
+ }
80
+ const _BROWSERSLISTRC = `./.browserslistrc_${_GULP_CUSTOM_BUILD_TARGET}`;
81
+ const _BROWSERSLISTRC_TARGET = `./.browserslistrc`;
82
+ console.log(` : Environment set browserslistrc [${_BROWSERSLISTRC}] will be copied to [${_BROWSERSLISTRC_TARGET}]`);
83
+ if (!libFS.existsSync(`./${_GULP_CONFIG}`))
84
+ {
85
+ console.log(`!!!> Enviromnent set browserslistrc doesn't exist!`);
86
+ process.exit(1);
87
+ }
88
+ else
89
+ {
90
+ libFS.copyFileSync(_BROWSERSLISTRC, _BROWSERSLISTRC_TARGET);
91
+ console.log(` > Environment Gulp Config copied`);
92
+ }
93
+ console.log(`---> The browserslistrc compatibility set is: ${libFS.readFileSync(_BROWSERSLISTRC_TARGET, 'utf8')}`);
94
+ // END OF STEP 3 and STEP 4 ABOVE
95
+
96
+
97
+ // ---> Now load the config and get on with building <--- \\
98
+ console.log(``);
99
+ console.log(`---> Loading the gulp config...`);
100
+ const _CONFIG = require('./gulpfile-config.json');
101
+ console.log(` > Building to [${_CONFIG.LibraryUniminifiedFileName}] and [${_CONFIG.LibraryMinifiedFileName}]`)
102
+
103
+ // ---> Boilerplate Browser Uglification and Packaging <--- \\
104
+ console.log(``);
105
+ console.log(`--> Gulp is taking over!`);
106
+
3
107
  const libBrowserify = require('browserify');
4
108
  const libGulp = require('gulp');
5
109
 
6
110
  const libVinylSourceStream = require('vinyl-source-stream');
7
111
  const libVinylBuffer = require('vinyl-buffer');
8
112
 
9
- const libTerser = require('gulp-terser');
10
- const libBuble = require('gulp-buble');
11
113
  const libSourcemaps = require('gulp-sourcemaps');
12
114
  const libGulpUtil = require('gulp-util');
115
+ const libBabel = require('gulp-babel');
116
+ const libTerser = require('gulp-terser');
13
117
 
14
118
  // Build the module for the browser
15
- // This gulp task is taken from the gulp recipe repository:
16
- // https://github.com/gulpjs/gulp/blob/master/docs/recipes/browserify-uglify-sourcemap.md
17
119
  libGulp.task('minified',
18
120
  () => {
19
121
  // set up the custom browserify instance for this task
20
122
  var tmpBrowserify = libBrowserify(
21
123
  {
22
- entries: './source/Manyfest-Browser-Shim.js',
23
- standalone: 'Fable',
124
+ entries: _CONFIG.EntrypointInputSourceFile,
125
+ standalone: _CONFIG.LibraryObjectName,
24
126
  debug: true
25
127
  });
26
128
 
27
129
  return tmpBrowserify.bundle()
28
- .pipe(libVinylSourceStream('manyfest.min.js'))
130
+ .pipe(libVinylSourceStream(_CONFIG.LibraryMinifiedFileName))
29
131
  .pipe(libVinylBuffer())
30
132
  .pipe(libSourcemaps.init({loadMaps: true}))
31
133
  // Add transformation tasks to the pipeline here.
134
+ .pipe(libBabel())
32
135
  .pipe(libTerser())
33
136
  .on('error', libGulpUtil.log)
34
137
  .pipe(libSourcemaps.write('./'))
35
- .pipe(libGulp.dest('./dist/'));
138
+ .pipe(libGulp.dest(_CONFIG.LibraryOutputFolder));
36
139
  });
37
140
 
38
141
  // Build the module for the browser
39
- // This gulp task is taken from the gulp recipe repository:
40
- // https://github.com/gulpjs/gulp/blob/master/docs/recipes/browserify-uglify-sourcemap.md
41
142
  libGulp.task('debug',
42
143
  () => {
43
144
  // set up the custom browserify instance for this task
44
145
  var tmpBrowserify = libBrowserify(
45
146
  {
46
- entries: './source/Manyfest-Browser-Shim.js',
47
- standalone: 'Manyfest',
147
+ entries: _CONFIG.EntrypointInputSourceFile,
148
+ standalone: _CONFIG.LibraryObjectName,
48
149
  debug: true
49
150
  });
50
151
 
51
152
  return tmpBrowserify.bundle()
52
- .pipe(libVinylSourceStream('manyfest.js'))
153
+ .pipe(libVinylSourceStream(_CONFIG.LibraryUniminifiedFileName))
53
154
  .pipe(libVinylBuffer())
155
+ .pipe(libBabel())
54
156
  .on('error', libGulpUtil.log)
55
- .pipe(libGulp.dest('./dist/'));
157
+ .pipe(libGulp.dest(_CONFIG.LibraryOutputFolder));
56
158
  });
57
159
 
58
160
  libGulp.task
59
161
  (
60
162
  'build',
61
163
  libGulp.series('debug', 'minified')
62
- );
164
+ );
package/package.json CHANGED
@@ -1,14 +1,17 @@
1
1
  {
2
2
  "name": "manyfest",
3
- "version": "1.0.16",
3
+ "version": "1.0.18",
4
4
  "description": "JSON Object Manifest for Data Description and Parsing",
5
5
  "main": "source/Manyfest.js",
6
6
  "scripts": {
7
+ "start": "node source/Manyfest.js",
7
8
  "docker-dev-build-image": "docker build ./ -f Dockerfile_LUXURYCode -t retold/manyfest:local",
8
9
  "docker-dev-run": "docker run -it -d --name manyfest -p 12340:8080 -v \"$PWD/.config:/home/coder/.config\" -v \"$PWD:/home/coder/manyfest\" -u \"$(id -u):$(id -g)\" -e \"DOCKER_USER=$USER\" retold/manyfest:local",
9
10
  "test": "./node_modules/mocha/bin/_mocha -u tdd -R spec",
10
11
  "tests": "./node_modules/mocha/bin/_mocha -u tdd -R spec --grep",
11
- "coverage": "nyc npm run test && nyc report --reporter=lcov"
12
+ "coverage": "nyc npm run test && nyc report --reporter=lcov",
13
+ "build": "./node_modules/.bin/gulp build",
14
+ "build-compatible": "GULP_CUSTOM_BUILD_TARGET=compatible ./node_modules/.bin/gulp build"
12
15
  },
13
16
  "repository": {
14
17
  "type": "git",
@@ -39,28 +42,29 @@
39
42
  ]
40
43
  },
41
44
  "devDependencies": {
42
- "@babel/core": "^7.17.9",
43
- "@babel/preset-env": "^7.16.11",
44
- "@testing-library/dom": "^8.13.0",
45
- "async": "^3.2.3",
45
+ "@babel/core": "^7.21.5",
46
+ "@babel/preset-env": "^7.21.5",
47
+ "@testing-library/dom": "^9.2.0",
48
+ "async": "^3.2.4",
46
49
  "browserify": "^17.0.0",
47
- "chai": "4.3.6",
50
+ "chai": "4.3.7",
48
51
  "gulp": "^4.0.2",
49
52
  "gulp-babel": "^8.0.0",
50
53
  "gulp-buble": "^0.9.0",
54
+ "gulp-env": "^0.4.0",
51
55
  "gulp-sourcemaps": "^3.0.0",
52
56
  "gulp-terser": "^2.1.0",
53
57
  "gulp-util": "^3.0.8",
54
- "jsdom": "^19.0.0",
55
- "mocha": "9.2.2",
56
- "npm-check-updates": "^12.5.9",
58
+ "jsdom": "^21.1.1",
59
+ "mocha": "10.2.0",
60
+ "npm-check-updates": "^16.10.9",
57
61
  "nyc": "^15.1.0",
58
62
  "vinyl-buffer": "^1.0.1",
59
63
  "vinyl-source-stream": "^2.0.0"
60
64
  },
61
65
  "dependencies": {
62
- "elucidator": "^1.0.2",
63
- "precedent": "^1.0.6"
66
+ "elucidator": "^1.0.7",
67
+ "precedent": "^1.0.9"
64
68
  },
65
69
  "author": "steven velozo <steven@velozo.com>",
66
70
  "license": "MIT",
@@ -7,7 +7,7 @@ let libSimpleLog = require('./Manyfest-LogToConsole.js');
7
7
  /**
8
8
  * Hash Translation
9
9
  *
10
- * This is a very simple translation table for hashes, which allows the same schema to resolve
10
+ * This is a very simple translation table for hashes, which allows the same schema to resolve
11
11
  * differently based on a loaded translation table.
12
12
  *
13
13
  * This is to prevent the requirement for mutating schemas over and over again when we want to
@@ -80,7 +80,7 @@ suite
80
80
  },
81
81
  Solvers:
82
82
  {
83
- 'ThumbnailFilesOnly':
83
+ 'ThumbnailFilesOnly':
84
84
  {
85
85
  "Description":
86
86
  {
@@ -94,7 +94,7 @@ suite
94
94
  "Namespace": "Logic",
95
95
  "Instruction": "if",
96
96
 
97
- "InputHashAddressMap":
97
+ "InputHashAddressMap":
98
98
  {
99
99
  "leftValue": "Record.format",
100
100
  "rightValue": "SolutionState.Config.SearchTerm",
@@ -67,7 +67,7 @@ suite
67
67
  "IDAnimal": { "Name":"Database ID", "Description":"The unique integer-based database identifier for an Animal record.", "DataType":"Integer" },
68
68
  "Name": { "Description":"The animal's colloquial species name (e.g. Rabbit, Dog, Bear, Mongoose)." },
69
69
  "Type": { "Description":"Whether or not the animal is wild, domesticated, agricultural, in a research lab or a part of a zoo.." },
70
- "MedicalStats":
70
+ "MedicalStats":
71
71
  {
72
72
  "Name":"Medical Statistics", "Description":"Basic medical statistics for this animal"
73
73
  },
@@ -89,7 +89,7 @@ suite
89
89
 
90
90
  fTestComplete();
91
91
  }
92
- );
92
+ );
93
93
  }
94
94
  );
95
95
  }
@@ -45,7 +45,7 @@ suite
45
45
  tmpCreator = _Manyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'Director');
46
46
  Expect(tmpCreator)
47
47
  .to.equal('General Mills');
48
-
48
+
49
49
  fTestComplete();
50
50
  }
51
51
  );
@@ -67,7 +67,7 @@ suite
67
67
  Expect(_Manyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'Director')).to.equal('General Mills');
68
68
  // And Author!
69
69
  Expect(_Manyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'Author')).to.equal('General Mills');
70
-
70
+
71
71
  fTestComplete();
72
72
  }
73
73
  );
@@ -91,7 +91,7 @@ suite
91
91
  _Manyfest.hashTranslations.removeTranslation('Director');
92
92
  Expect(_Manyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'Author')).to.equal('General Mills');
93
93
  Expect(_Manyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'Director')).to.equal(undefined);
94
-
94
+
95
95
  fTestComplete();
96
96
  }
97
97
  );
@@ -116,7 +116,7 @@ suite
116
116
  Expect(_Manyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'Author')).to.equal(undefined);
117
117
  Expect(_Manyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'Director')).to.equal(undefined);
118
118
  Expect(_Manyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'Songwriter')).to.equal('General Mills');
119
-
119
+
120
120
  fTestComplete();
121
121
  }
122
122
  );
@@ -142,7 +142,7 @@ suite
142
142
  Expect(_Manyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'Director')).to.equal(undefined);
143
143
  Expect(_Manyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'Songwriter')).to.equal(undefined);
144
144
  Expect(_Manyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'Creator')).to.equal('General Mills');
145
-
145
+
146
146
  fTestComplete();
147
147
  }
148
148
  );
@@ -152,13 +152,13 @@ suite
152
152
  (fTestComplete)=>
153
153
  {
154
154
  let _Manyfest = new libManyfest({ Scope:'Archive.org', Descriptors: {'metadata.creator': {Name:'Creator', Hash:'Creator'}}});
155
- // Create a translation between "Creator" and "metadata.identifier", which isn't in the manifest in any way
155
+ // Create a translation between "Creator" and "metadata.identifier", which isn't in the manifest in any way
156
156
  _Manyfest.hashTranslations.addTranslation({"Creator":"metadata.identifier"});
157
157
  // This address is not in the descriptor address list or the hash list
158
158
  Expect(_Manyfest.getValueAtAddress(_SampleDataArchiveOrgFrankenberry, 'metadata.identifier')).to.equal('FrankenberryCountChoculaTevevisionCommercial1971');
159
159
  // But now we've pointed the Creator hash to it!
160
160
  Expect(_Manyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'Creator')).to.equal('FrankenberryCountChoculaTevevisionCommercial1971');
161
-
161
+
162
162
  fTestComplete();
163
163
  }
164
164
  );
@@ -172,7 +172,7 @@ suite
172
172
  Expect(_Manyfest.hashTranslations.addTranslation('THIS SHOULD BE AN OBJECT')).to.equal(false);
173
173
 
174
174
  Expect(_Manyfest.hashTranslations.translationCount()).to.equal(0);
175
-
175
+
176
176
  fTestComplete();
177
177
  }
178
178
  );
@@ -47,7 +47,7 @@ suite
47
47
 
48
48
  fTestComplete();
49
49
  }
50
- );
50
+ );
51
51
  test
52
52
  (
53
53
  'All properties should be auto created on Populate.',
@@ -133,7 +133,7 @@ suite
133
133
 
134
134
  fTestComplete();
135
135
  }
136
- );
136
+ );
137
137
  }
138
138
  );
139
139
  }
@@ -42,6 +42,7 @@ suite
42
42
  });
43
43
  let tmpFileSet = _Manyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'FileSet');
44
44
  Expect(Array.isArray(tmpFileSet)).to.equal(true);
45
+ let tmpFileSizes = _Manyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'FileSizes');
45
46
  fTestComplete();
46
47
  }
47
48
  );
@@ -68,7 +68,7 @@ suite
68
68
  "IDAnimal": { "Name":"Database ID", "Description":"The unique integer-based database identifier for an Animal record.", "DataType":"Integer" },
69
69
  "Name": { "Description":"The animal's colloquial species name (e.g. Rabbit, Dog, Bear, Mongoose)." },
70
70
  "Type": { "Description":"Whether or not the animal is wild, domesticated, agricultural, in a research lab or a part of a zoo.." },
71
- "MedicalStats":
71
+ "MedicalStats":
72
72
  {
73
73
  "Name":"Medical Statistics", "Description":"Basic medical statistics for this animal"
74
74
  },
@@ -95,7 +95,7 @@ suite
95
95
 
96
96
  fTestComplete();
97
97
  }
98
- );
98
+ );
99
99
  }
100
100
  );
101
101
  suite
@@ -41,7 +41,7 @@ suite
41
41
  "a": "CarrotCost",
42
42
  "b": "AppleCost"
43
43
  });
44
-
44
+
45
45
  Expect(tmpSchemaDescriptors.a.Hash).to.equal('a');
46
46
 
47
47
  let _Manyfest = new libManyfest();
@@ -71,7 +71,7 @@ suite
71
71
  "a": "CarrotCost",
72
72
  "b": "AppleCost"
73
73
  });
74
-
74
+
75
75
  Expect(tmpSchemaDescriptors.a.Hash).to.equal('a');
76
76
 
77
77
  let _Manyfest = new libManyfest();
@@ -97,7 +97,7 @@ suite
97
97
  "a": { "Hash": "a", "Type": "Number" },
98
98
  "b": { "Hash": "b", "Type": "Number" }
99
99
  });
100
-
100
+
101
101
  let tmpSchemaDescriptorsToMerge = (
102
102
  {
103
103
  "c": { "Hash": "c" },
@@ -105,7 +105,7 @@ suite
105
105
  "e": { "Hash": "e" },
106
106
  "a": { "Hash": "ARBUCKLE", "Type": "Number" }
107
107
  });
108
-
108
+
109
109
  Expect(tmpSchemaDescriptors.a.Hash).to.equal('a');
110
110
 
111
111
  let _Manyfest = new libManyfest();
@@ -137,14 +137,14 @@ suite
137
137
  "a": "CarrotCost",
138
138
  "b": "AppleCost"
139
139
  });
140
-
140
+
141
141
  let _Manyfest = new libManyfest({ Scope:'Archive.org', Descriptors: {'metadata.creator': {Name:'Creator', Hash:'Creator'}}});
142
142
  // Property not schema, accessed by hash:
143
143
  let tmpCreator = _Manyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'Creator');
144
144
  Expect(tmpCreator).to.equal('General Mills');
145
145
  let _ClonedManyfest = _Manyfest.clone();
146
146
  Expect(_ClonedManyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'Creator')).to.equal('General Mills');
147
-
147
+
148
148
  fTestComplete();
149
149
  }
150
150
  );
@@ -164,7 +164,7 @@ suite
164
164
  "a": "CarrotCost",
165
165
  "b": "AppleCost"
166
166
  });
167
-
167
+
168
168
  let _Manyfest = new libManyfest({ Scope:'Archive.org', Descriptors: {'metadata.creator': {Name:'Creator', Hash:'Creator'}}});
169
169
  // Property not schema, accessed by hash:
170
170
  let tmpCreator = _Manyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'Creator');
@@ -193,7 +193,7 @@ suite
193
193
  _ClonedManyfest.hashTranslations.addTranslation({"Director":"Creator", "Author":"Creator", "Songwriter":"Creator"});
194
194
  Expect(_ClonedManyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'Director')).to.equal('General Mills');
195
195
  Expect(_Manyfest.getValueByHash(_SampleDataArchiveOrgFrankenberry, 'Director')).to.equal(undefined);
196
-
196
+
197
197
  fTestComplete();
198
198
  }
199
199
  );
@@ -213,7 +213,7 @@ suite
213
213
  "c": null
214
214
  }
215
215
  });
216
-
216
+
217
217
  let _Manyfest = new libManyfest();
218
218
  // Now remap the schema (in-place)
219
219
  let tmpSchemaPrototype = _Manyfest.objectAddressGeneration.generateAddressses(tmpSchemaDescriptors);
@@ -230,7 +230,7 @@ suite
230
230
  (
231
231
  'Make a much bigger schema prototype.',
232
232
  (fTestComplete)=>
233
- {
233
+ {
234
234
  let _Manyfest = new libManyfest();
235
235
  // Now remap the schema (in-place)
236
236
  let tmpSchemaPrototype = _Manyfest.objectAddressGeneration.generateAddressses(_SampleDataArchiveOrgFrankenberry);
@@ -257,7 +257,7 @@ suite
257
257
  "IDAnimal": { "Name":"Database ID", "Description":"The unique integer-based database identifier for an Animal record.", "DataType":"Integer" },
258
258
  "Name": { "Description":"The animal's colloquial species name (e.g. Rabbit, Dog, Bear, Mongoose)." },
259
259
  "Type": { "Description":"Whether or not the animal is wild, domesticated, agricultural, in a research lab or a part of a zoo.." },
260
- "MedicalStats":
260
+ "MedicalStats":
261
261
  {
262
262
  "Name":"Medical Statistics", "Description":"Basic medical statistics for this animal"
263
263
  },
@@ -60,7 +60,7 @@ suite
60
60
 
61
61
  fTestComplete();
62
62
  }
63
- );
63
+ );
64
64
  test
65
65
  (
66
66
  'Validate should be able to test for dates.',