@projectinvicta/nails 2.0.15 → 3.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 (123) hide show
  1. package/README.md +70 -84
  2. package/bin/test/test_init.sh +33 -0
  3. package/index.ts +11 -0
  4. package/lib/Controller.ts +207 -0
  5. package/lib/Nails.ts +210 -0
  6. package/lib/Router.ts +180 -0
  7. package/lib/{application.js → application.ts} +8 -3
  8. package/lib/config.ts +74 -0
  9. package/package.json +14 -11
  10. package/spec/controller.spec.js +5 -51
  11. package/spec/nails.spec.js +1 -0
  12. package/spec/router.spec.js +5 -5
  13. package/spec/services/integration/config/db.ts +7 -0
  14. package/spec/services/integration/config/service.js +8 -8
  15. package/spec/services/integration/server/controllers/classbased_controller.js +2 -2
  16. package/spec/services/integration/server/controllers/default_json_controller.js +19 -7
  17. package/spec/services/integration/server/controllers/error_controller.js +2 -2
  18. package/spec/services/integration/server/controllers/home_controller.js +6 -28
  19. package/spec/services/integration/server/controllers/json_controller.js +2 -2
  20. package/spec/services/integration/server/controllers/manualrenderasync_controller.js +2 -2
  21. package/spec/services/integration/server/controllers/mjs_controller.mjs +2 -6
  22. package/spec/services/integration/server/controllers/modeltest_controller.js +6 -9
  23. package/spec/services/integration/server/controllers/websocket_controller.js +1 -1
  24. package/spec/services/integration/server/models/dog.js +7 -5
  25. package/spec/services/integration/server/models/owner.js +13 -0
  26. package/spec/services/integration/server.js +3 -4
  27. package/spec/services.integration.spec.js +45 -17
  28. package/templates/default/config/db.ts +13 -0
  29. package/{spec/services/integration_sequelize/config/mimes.js → templates/default/config/mimes.ts} +42 -61
  30. package/templates/default/config/routes.ts +22 -0
  31. package/templates/{config/service.js → default/config/service.ts} +2 -2
  32. package/templates/default/package.json +8 -2
  33. package/templates/default/public/README.xml +68 -85
  34. package/templates/default/server/controllers/home_controller.js +2 -2
  35. package/templates/{server/controllers/home_controller.js → default/server/controllers/users_controller.ts} +29 -34
  36. package/templates/default/server/models/Dog.ts +8 -0
  37. package/templates/default/server/models/User.ts +14 -0
  38. package/templates/default/spec/User.test.js +7 -5
  39. package/templates/default/spec/home_controller.test.js +3 -3
  40. package/index.js +0 -6
  41. package/lib/collection.js +0 -6
  42. package/lib/controller.js +0 -182
  43. package/lib/database_connector.js +0 -12
  44. package/lib/firebase_connector.js +0 -94
  45. package/lib/model_v2.js +0 -24
  46. package/lib/mongoose_connector.js +0 -49
  47. package/lib/mongoose_mem_connector.js +0 -21
  48. package/lib/nails.js +0 -244
  49. package/lib/router.js +0 -202
  50. package/lib/sequelize_connector.js +0 -31
  51. package/lib/server.js +0 -1
  52. package/spec/model_v2.spec.js +0 -75
  53. package/spec/mongodb_connector.util.js +0 -30
  54. package/spec/mongoose_connector.util.js +0 -20
  55. package/spec/sequelize_connector.spec.js +0 -91
  56. package/spec/sequelize_connector.util.js +0 -18
  57. package/spec/services/integration/config/db.js +0 -14
  58. package/spec/services/integration_sequelize/README.md +0 -5
  59. package/spec/services/integration_sequelize/client/css/styles.css +0 -0
  60. package/spec/services/integration_sequelize/client/download.jpg +0 -0
  61. package/spec/services/integration_sequelize/client/favicon.ico +0 -0
  62. package/spec/services/integration_sequelize/client/index.html +0 -9
  63. package/spec/services/integration_sequelize/client/js/client.js +0 -0
  64. package/spec/services/integration_sequelize/client/js/components/app.jsx +0 -15
  65. package/spec/services/integration_sequelize/config/db.js +0 -4
  66. package/spec/services/integration_sequelize/config/routes.js +0 -25
  67. package/spec/services/integration_sequelize/config/service.js +0 -48
  68. package/spec/services/integration_sequelize/config/ssl/certificate.pem +0 -22
  69. package/spec/services/integration_sequelize/config/ssl/csr.csr +0 -17
  70. package/spec/services/integration_sequelize/config/ssl/key.pem +0 -28
  71. package/spec/services/integration_sequelize/config/ssl/private_key.pem +0 -30
  72. package/spec/services/integration_sequelize/config/ssl/public_key.pem +0 -9
  73. package/spec/services/integration_sequelize/package.json +0 -23
  74. package/spec/services/integration_sequelize/server/controllers/default_json_controller.js +0 -21
  75. package/spec/services/integration_sequelize/server/controllers/home_controller.js +0 -39
  76. package/spec/services/integration_sequelize/server/models/dog.js +0 -7
  77. package/spec/services/integration_sequelize/server/models/owner.js +0 -10
  78. package/spec/services/integration_sequelize/server/views/defaultjson/testnojson.ejs +0 -1
  79. package/spec/services/integration_sequelize/server/views/testreact/testreact.ejs +0 -15
  80. package/spec/services/integration_sequelize/server.js +0 -9
  81. package/spec/services.integration_sequelize.spec.js +0 -60
  82. package/templates/bin/promote.sh +0 -20
  83. package/templates/bin/rollout.sh +0 -74
  84. package/templates/bin/server.js +0 -6
  85. package/templates/bin/start.sh +0 -16
  86. package/templates/common/readme_fetcher.js +0 -4
  87. package/templates/config/db.js +0 -19
  88. package/templates/config/mimes.js +0 -59
  89. package/templates/config/routes.js +0 -38
  90. package/templates/config/ssl/certificate.pem +0 -22
  91. package/templates/config/ssl/csr.csr +0 -17
  92. package/templates/config/ssl/key.pem +0 -28
  93. package/templates/config/ssl/private_key.pem +0 -30
  94. package/templates/config/ssl/public_key.pem +0 -9
  95. package/templates/default/config/db.js +0 -19
  96. package/templates/default/config/mimes.js +0 -59
  97. package/templates/default/config/routes.js +0 -38
  98. package/templates/default/config/service.js +0 -45
  99. package/templates/default/server/models/User.js +0 -18
  100. package/templates/package-lock.json +0 -9048
  101. package/templates/package.json +0 -43
  102. package/templates/public/README.xml +0 -332
  103. package/templates/public/css/styles.css +0 -17
  104. package/templates/public/download.jpg +0 -0
  105. package/templates/public/favicon.ico +0 -0
  106. package/templates/public/index.html +0 -9
  107. package/templates/public/js/client.js +0 -1
  108. package/templates/server/models/User.js +0 -18
  109. package/templates/server/views/home/index.ejs +0 -14
  110. package/templates/server/views/partials/javascripts.ejs +0 -1
  111. package/templates/server/views/partials/reactapp.ejs +0 -1
  112. package/templates/server/views/partials/styles.ejs +0 -3
  113. package/templates/spec/User.test.js +0 -20
  114. package/templates/spec/home_controller.test.js +0 -28
  115. package/templates/spec/setupTests.js +0 -0
  116. package/templates/src/AboutPage.jsx +0 -9
  117. package/templates/src/HomePage.jsx +0 -9
  118. package/templates/src/Layout.jsx +0 -78
  119. package/templates/src/ReadmePage.jsx +0 -7
  120. package/templates/src/app.jsx +0 -29
  121. package/templates/src/components/ReadmeLoader.jsx +0 -13
  122. package/templates/src/styles/appstyles.css +0 -3
  123. package/templates/vite.config.ts +0 -42
@@ -1,75 +0,0 @@
1
- import assert from 'assert';
2
- import Model from '../lib/model_v2.js';
3
- import MongooseConnectorUtil from './mongoose_connector.util.js';
4
-
5
- const testSchema = {
6
- name: String,
7
- isTrue: Boolean,
8
- index: Number
9
- }
10
- let TestModel = null;
11
-
12
-
13
- describe('ModelV2', function() {
14
- var util;
15
- beforeEach(async function() {
16
- util = new MongooseConnectorUtil();
17
- let connector = await util.getTestConnector();
18
- Model.setConnector(connector);
19
- TestModel =
20
- class Test extends new Model(
21
- "" + Math.random(), {schema: testSchema}) {
22
- whatsMyName() {return this.name};
23
- };
24
- });
25
- afterEach(async function() {
26
- await util.cleanup();
27
- });
28
- describe('Mongoose Model Inheritance', function() {
29
- const testAttr = {
30
- name: "testname",
31
- isTrue: false,
32
- index: 7
33
- };
34
- it("should be able to create a model", async function() {
35
- const testModel = new TestModel(testAttr);
36
- assert(testModel.name == testAttr.name);
37
- assert(testModel.isTrue == testAttr.isTrue);
38
- assert(testModel.index == testAttr.index);
39
- await testModel.save();
40
- console.log("The ID is:", testModel._id);
41
- })
42
- it("should be able to update a model", function() {
43
- const testModel = new TestModel(testAttr);
44
- const newName = "newName";
45
- return testModel.save().then(savedModel => {
46
- savedModel.name = newName;
47
- return savedModel.save();
48
- }).then(secondSavedModel => {
49
- assert(secondSavedModel.name == newName);
50
- assert(secondSavedModel._id == testModel._id);
51
- });
52
- });
53
- it("should be able to delete a model", async function() {
54
- const testModel = new TestModel(testAttr);
55
- await testModel.save();
56
- await TestModel.deleteOne({_id: testModel._id});
57
- assert.equal(await TestModel.findById(testModel._id), null);
58
- })
59
- it("should be able to find a model by id", async function() {
60
- const testModel = new TestModel(testAttr);
61
- await testModel.save();
62
- const foundModel = await TestModel.findById(testModel._id);
63
- assert(testModel._id.toString() == foundModel._id.toString());
64
- assert.equal(testModel.name, foundModel.name);
65
- assert.equal(testModel.isTrue, foundModel.isTrue);
66
- assert.equal(testModel.index, foundModel.index);
67
- });
68
- it("should preserve instance methods", async function() {
69
- const testModel = new TestModel(testAttr);
70
- await testModel.save();
71
- const foundModel = await TestModel.findById(testModel._id);
72
- assert.equal(foundModel.whatsMyName(), testModel.name);
73
- });
74
- });
75
- })
@@ -1,30 +0,0 @@
1
- import MongooseConnector from '../lib/mongoose_connector.js';
2
- import {MongoMemoryServer} from 'mongodb-memory-server';
3
-
4
- let singularInstanceCreated = false;
5
- let promisedMongod = null;
6
-
7
- class MongoDBConnectorUtil {
8
- constructor() {
9
- promisedMongod = MongoMemoryServer.create();
10
- singularInstanceCreated = true;
11
- }
12
-
13
- async getTestConnector() {
14
- this.mongod = await promisedMongod;
15
- const uri = this.mongod.getUri();
16
- const port = this.mongod.instanceInfo.port;
17
- const dbPath = this.mongod.instanceInfo.dbPath;
18
- const dbName = this.mongod.instanceInfo.dbName;
19
- const dbConfig =
20
- {uri: uri, port: port, database: dbName, dbPath: dbPath};
21
- //console.log(JSON.stringify(dbConfig));
22
- return new MongooseConnector(dbConfig);
23
- }
24
-
25
- async cleanup() {
26
- await this.mongod.stop();
27
- }
28
- }
29
-
30
- export default MongoDBConnectorUtil;
@@ -1,20 +0,0 @@
1
- import MongooseMemoryConnector from '../lib/mongoose_mem_connector.js';
2
- import mongoose from 'mongoose';
3
-
4
- class MongooseConnectorUtil {
5
- constructor() {
6
- this.mongoose = mongoose;
7
- }
8
-
9
- async getTestConnector() {
10
- const dbConnector = new MongooseMemoryConnector();
11
- this.connection = await dbConnector.connect();
12
- debugger;
13
- return dbConnector;
14
- }
15
- async cleanup() {
16
- debugger;
17
- }
18
- }
19
-
20
- export default MongooseConnectorUtil;
@@ -1,91 +0,0 @@
1
- // import SequelizeConnector from '../lib/sequelize_connector.js';
2
- import assert from 'assert';
3
- import Model from '../lib/model_v2.js';
4
- import { DataTypes } from 'sequelize';
5
- import SequelizeConnectorUtil from './sequelize_connector.util.js';
6
-
7
- const TEST_SCHEMA = {
8
- name: DataTypes.STRING,
9
- favoriteColor: {
10
- type: DataTypes.STRING,
11
- defaultValue: 'green',
12
- },
13
- age: DataTypes.INTEGER,
14
- cash: DataTypes.INTEGER,
15
- }
16
- let TestSequelizeModel = null;
17
- let TestSequelizeIndexedModel = null;
18
-
19
- const TEST_OPTIONS = {
20
- schema: {
21
- label: DataTypes.STRING,
22
- value: DataTypes.STRING,
23
- },
24
- options: {
25
- indexes: [
26
- {
27
- unique: true,
28
- fields: ['label', 'value'],
29
- },
30
- ],
31
- },
32
- };
33
-
34
- describe('ModelV2 using SequelizeConnector', function() {
35
- let util;
36
- beforeEach(async function() {
37
- util = new SequelizeConnectorUtil();
38
- const connector = await util.getTestConnector();
39
- Model.setConnector(connector);
40
- TestSequelizeModel =
41
- class TestSequelizeModel extends new Model("TestSequelizeModel", TEST_SCHEMA) {};
42
- TestSequelizeIndexedModel =
43
- class TestSequelizeIndexedModel extends new Model("TestSequelizeIndexedModel", TEST_OPTIONS) {};
44
- await connector.sequelize.sync({ force: true });
45
- });
46
-
47
- it("Should be able to create, save, and retrieve a model", async function() {
48
- const MODEL_NAME = "First test model created";
49
- const testModel = TestSequelizeModel.build({name: MODEL_NAME});
50
- await testModel.save();
51
- const models = await TestSequelizeModel.findAll();
52
- assert(models.length == 1, "Should have one model");
53
- assert(models[0].name == MODEL_NAME, "Name should be consistent");
54
- assert(models[0] instanceof TestSequelizeModel);
55
- });
56
-
57
- it("Should be able to create, save, and retrieve a complex model", async function() {
58
- const MODEL_LABEL = "First test model LABEL";
59
- const MODEL_VALUE = "First test model VALUE";
60
- const testModel = await TestSequelizeIndexedModel.create({label: MODEL_LABEL, value: MODEL_VALUE});
61
- const models = await TestSequelizeIndexedModel.findAll();
62
- assert(models.length == 1, "Should have one model");
63
- assert(models[0].label == MODEL_LABEL, "label should be persisted");
64
- assert(models[0].value == MODEL_VALUE, "value should be persisted");
65
- assert(models[0] instanceof TestSequelizeIndexedModel);
66
- });
67
-
68
- it("Should be able to respect unique indexes", async function() {
69
- const MODEL_LABEL_0 = "MODEL_LABEL_0";
70
- const MODEL_VALUE_0 = "MODEL_VALUE_0";
71
- const MODEL_LABEL_1 = "MODEL_LABEL_1";
72
- const MODEL_VALUE_1 = "MODEL_VALUE_1";
73
- const testModels = await TestSequelizeIndexedModel.bulkCreate(
74
- [
75
- {label: MODEL_LABEL_0, value: MODEL_VALUE_0},
76
- {label: MODEL_LABEL_0, value: MODEL_VALUE_1},
77
- {label: MODEL_LABEL_1, value: MODEL_VALUE_0},
78
- {label: MODEL_LABEL_1, value: MODEL_VALUE_1},
79
- ]
80
- );
81
- assert(testModels.length == 4, "Should creaete 4 models");
82
- let indexWasRespected = true;
83
- try {
84
- await TestSequelizeIndexedModel.create({label: MODEL_LABEL_0, value: MODEL_VALUE_0});
85
- indexWasRespected = false;
86
- } catch(e) {
87
- console.log("Error was thrown as expected");
88
- }
89
- assert(indexWasRespected, "Should have thrown an error")
90
- });
91
- });
@@ -1,18 +0,0 @@
1
- import SequelizeConnector from '../lib/sequelize_connector.js';
2
-
3
- class SequelizeConnectorUtil {
4
- constructor() {
5
- }
6
-
7
- async getTestConnector() {
8
- const dbConnector = new SequelizeConnector();
9
- this.connection = await dbConnector.connect({address: 'sqlite::memory:'});
10
- debugger;
11
- return dbConnector;
12
- }
13
- async cleanup() {
14
- debugger;
15
- }
16
- }
17
-
18
- export default SequelizeConnectorUtil;
@@ -1,14 +0,0 @@
1
- export default {
2
- // connector: 'sqlite3_connector.js',
3
- // connector: 'mongoose_connector.js',
4
- connector: 'mongoose_mem_connector.js',
5
- // url: 'mongodb://localhost',
6
- // port: 4444,
7
-
8
- dbName: 'development',
9
-
10
- // For the sqlite3 connector. Unless a filename is defined, an in-memory
11
- // database is used. In-memory databases are not persisted, and will be lost
12
- // when the server is restarted.
13
- //filename: ':memory:'
14
- }
@@ -1,5 +0,0 @@
1
- Integration testing (Sans DB Connector)
2
- ==============
3
-
4
- The package.json was copied from the example app. This is for integration
5
- testing nails.
@@ -1,9 +0,0 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- </head>
5
- <body>
6
- <h1>Welcome</h1>
7
- <div></div>
8
- </body>
9
- </html>
@@ -1,15 +0,0 @@
1
- // Use frontend React components to build a single-page webapp
2
- class App extends React.Component {
3
- render() {
4
- return (
5
- <div>
6
- Successfully rendered your homepage!
7
- </div>
8
- );
9
- }
10
- }
11
-
12
- ReactDOM.render(
13
- <App />,
14
- document.getElementById('app')
15
- );
@@ -1,4 +0,0 @@
1
- export default {
2
- connector: 'sequelize_connector.js',
3
- address: 'sqlite::memory:',
4
- }
@@ -1,25 +0,0 @@
1
- /**
2
- * Routes specifies the array of route definitions to be passed to the router
3
- *
4
- * Routes are checked in series, and the first matching route is applied.
5
- * A route definition is as follows:
6
- * ['METHOD', 'MATCHER', 'OPTIONS']
7
- *
8
- * METHOD => crud methods (GET, PUT, POST, DELETE)
9
- * MATCHER => to be matched against the path. Captured elements will be passed to options. Delegates to express application routing.
10
- * OPTIONS => an object with parametes deciding how the route will be handled in order of execution:
11
- * path: => the path to a static file ( index.html f/e)
12
- * controller: => controller to route the request to. TODO: May implement a resource definition for automatically routing cruds
13
- * action: => the method to run in the controller. If not specified, the index method will be called.
14
- * [1..n]: => each numerical definition defines a parameter in which to store the value of the captured elements in the regex.
15
- * controller, and action are protected names and will apply the cature to controller name and method respectively.
16
- * f/e: ['get', /\/(home)/, {0: 'controller'}] => routes to home controller
17
- * ['get, '/\/home\/(5)/, {controller: 'home', 0: 'id'}] => routes to home controller and adds {id: 5} to the params hash.
18
- */
19
-
20
- var routes = [
21
- // Routes the root request to index.html, as well as all other requests to static
22
- ['get', "/", {controller: 'home'}],
23
- ];
24
-
25
- export default routes;
@@ -1,48 +0,0 @@
1
- // Initializes application before server starts
2
- // Each of these is REQUIRED
3
-
4
- import routes from './routes.js';
5
- import mimes from './mimes.js';
6
- import db from './db.js';
7
-
8
- var SERVER_ROOT = import.meta.dirname + '/..';
9
- var APP_ROOT = SERVER_ROOT + '/server';
10
-
11
- // Only for reading the certificates for SSL
12
- import fs from 'node:fs';
13
- // const fs = require('fs');
14
- const PRIVATE_KEY_FILE = fs.readFileSync(`${import.meta.dirname}/ssl/key.pem`);
15
- const CERTIFICATE_FILE = fs.readFileSync(`${import.meta.dirname}/ssl/certificate.pem`);
16
-
17
- var config = {
18
- APP_ROOT: APP_ROOT,
19
- // root directory for delivering static assets
20
- PUBLIC_ROOT: SERVER_ROOT + '/client',
21
- CONTROLLERS_ROOT: APP_ROOT + '/controllers',
22
- VIEWS_ROOT: APP_ROOT + '/views',
23
- MODELS_ROOT: APP_ROOT + '/models',
24
- SERVER_ROOT: SERVER_ROOT,
25
-
26
- ENABLE_HTTP: true,
27
- //IP: "0.0.0.0",
28
- PORT: 4444,
29
-
30
- ASYNC: false,
31
-
32
- // For HTTPS
33
- ENABLE_HTTPS: true,
34
- SSL_PORT: 3334,
35
- PRIVATE_KEY: PRIVATE_KEY_FILE,
36
- CERTIFICATE: CERTIFICATE_FILE,
37
- };
38
-
39
- // module.exports.routes = require('./routes.js');
40
- // module.exports.mimes = require('./mimes.js');
41
- // module.exports.db = require('./db.js');
42
-
43
- export default {
44
- config,
45
- routes,
46
- db,
47
- mimes,
48
- }
@@ -1,22 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIDrzCCApegAwIBAgIUR04h3qlfhW5SYQrnm0VjDSLQrwUwDQYJKoZIhvcNAQEL
3
- BQAwZzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQ4wDAYDVQQKDAVOYWlsczES
4
- MBAGA1UEAwwJbG9jYWxob3N0MScwJQYJKoZIhvcNAQkBFhhhZG1pbkBwcm9qZWN0
5
- aW52aWN0YS5jb20wHhcNMjMwODMwMDE1MzUzWhcNMjQwODI5MDE1MzUzWjBnMQsw
6
- CQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExDjAMBgNVBAoMBU5haWxzMRIwEAYDVQQD
7
- DAlsb2NhbGhvc3QxJzAlBgkqhkiG9w0BCQEWGGFkbWluQHByb2plY3RpbnZpY3Rh
8
- LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALP54rGDg1Lo7FSs
9
- q4xvvOeisWLJzbTZN+hsxL3ytcxvk3oidVoZDDfkDJ1QBoPFjIyHlJZCvC6mJMeY
10
- 3Nibn1zZAtsST84DCYS8c0bQAbEUc+OwSmNpVLQElnTAKyoY/7izj579p5uR7WLD
11
- mSk2c4igeqjOAQn/rrC3Lr+Dr6HA3lcEQD7g87OQz7JCRY6p5E980HO81gknnxod
12
- veQogbreiQ+MOwC9qPOwfJjAX/qkTWc1SXIiV2SskoIANTbGujMHZZZIaY5a5oWZ
13
- 9pAKR0basSAjECMmr1/UCKGZeot0AZRKMBSHp6mlHlE5LLFIH56PaRTguSBhsrle
14
- BWcuUcUCAwEAAaNTMFEwHQYDVR0OBBYEFCigQMRd+cKymXdHgew3JMEcokv0MB8G
15
- A1UdIwQYMBaAFCigQMRd+cKymXdHgew3JMEcokv0MA8GA1UdEwEB/wQFMAMBAf8w
16
- DQYJKoZIhvcNAQELBQADggEBAD5ZtQ3XLBzOiJoICcRA0evC/59gt2kKw1owOLJy
17
- Ji4rtoWCis8nr3R1U62KUENZ//WRy09uNPHfjsaFwuvgO+GWn53Q3breCEO1r2lH
18
- z5qWUAdb7WpoZWZJdj6wZoJQeKQoK8fVCVNNPNHwhZRK2P2SWhn5v/7Qco5JMP8+
19
- qpIbAzjKOoHiz1238JYXJ5G1tMVMfVvQpC1E+KM9p9Bohtuc51pYMssT31WPBoOv
20
- TBcIarZ8ri6VBAh/+aUpce0BqOEtZ1oa6Mnd2w5GeqgtV+G7ir5g0uXZjOFrh5A7
21
- c6J3QmpeF3kfs+Ggsxh/fRrnK1VDDtWQ/mF/3Jrq43JoP0E=
22
- -----END CERTIFICATE-----
@@ -1,17 +0,0 @@
1
- -----BEGIN CERTIFICATE REQUEST-----
2
- MIICrDCCAZQCAQAwZzELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQ4wDAYDVQQK
3
- DAVOYWlsczESMBAGA1UEAwwJbG9jYWxob3N0MScwJQYJKoZIhvcNAQkBFhhhZG1p
4
- bkBwcm9qZWN0aW52aWN0YS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
5
- AoIBAQCz+eKxg4NS6OxUrKuMb7znorFiyc202TfobMS98rXMb5N6InVaGQw35Ayd
6
- UAaDxYyMh5SWQrwupiTHmNzYm59c2QLbEk/OAwmEvHNG0AGxFHPjsEpjaVS0BJZ0
7
- wCsqGP+4s4+e/aebke1iw5kpNnOIoHqozgEJ/66wty6/g6+hwN5XBEA+4POzkM+y
8
- QkWOqeRPfNBzvNYJJ58aHb3kKIG63okPjDsAvajzsHyYwF/6pE1nNUlyIldkrJKC
9
- ADU2xrozB2WWSGmOWuaFmfaQCkdG2rEgIxAjJq9f1AihmXqLdAGUSjAUh6eppR5R
10
- OSyxSB+ej2kU4LkgYbK5XgVnLlHFAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEA
11
- U9LsZPK6UDQJFNCVAwDQszIE8Jt5LsNR/h7/ljp98T2BEW5+i7kPGCF+sIzkafQR
12
- 1NEKrwq8nAHOoS7cbzTQCtRLHgKQ5edj/dWVEzDmhf07uvq2wc9QmBjw9DIWD9Hd
13
- 7P4FsOHEp++4h+CupNwLaMrisggsWtVihvqpSJxWt3IzvoqWKldBfIZfR1nf2Tl+
14
- 2N1taAX+LHWQwzoq5xMMxmtQgabZk5kbeJ2K+NyxP3msjmREsRn0+TWzw9sTU6qu
15
- 9EZtiW6xje2KlvjSmRP7pvJg17GbtqCHSVWamcHqs/HE69SZhgY/iWJk7eIJhSY3
16
- /b5srd0URvtlTivyQgsfUg==
17
- -----END CERTIFICATE REQUEST-----
@@ -1,28 +0,0 @@
1
- -----BEGIN PRIVATE KEY-----
2
- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCz+eKxg4NS6OxU
3
- rKuMb7znorFiyc202TfobMS98rXMb5N6InVaGQw35AydUAaDxYyMh5SWQrwupiTH
4
- mNzYm59c2QLbEk/OAwmEvHNG0AGxFHPjsEpjaVS0BJZ0wCsqGP+4s4+e/aebke1i
5
- w5kpNnOIoHqozgEJ/66wty6/g6+hwN5XBEA+4POzkM+yQkWOqeRPfNBzvNYJJ58a
6
- Hb3kKIG63okPjDsAvajzsHyYwF/6pE1nNUlyIldkrJKCADU2xrozB2WWSGmOWuaF
7
- mfaQCkdG2rEgIxAjJq9f1AihmXqLdAGUSjAUh6eppR5ROSyxSB+ej2kU4LkgYbK5
8
- XgVnLlHFAgMBAAECggEAJRJufyk7VkszTxfIOGPV0hLhnhs6e6uYyBALkKLbjtJW
9
- 2vwZFyd8rFCVxpuy09bP5iyRT0hM0gEYJ2MV7qpTr8DlxTFm7eUTQ1u8FRSInKy9
10
- WGO6VvLd5zzgrwjce03t8uJNza6rJTDwaH0o4ePc9YI08euJLEGV/sGk5/8coOEr
11
- sdczGdxxumLEew9vwjDbIFuuVr4YHn/qs6h8DzEg595jWBibWxqVx4JvKTAMCmeM
12
- oLi251i2y3NLoKRd/+MOQ1WW9fLMiA1/cbhICqp3hGCGRv/g71bM0DVPsfmSPwGt
13
- Jm+Wtv12gmRqfDw5N+hJxAIUiW1CqU9SAZDmrPV+ewKBgQD373V/fBV1x73Mhbsr
14
- +4IZxmp4CbLeT2aUFMThLfTCfs7zNL4VRfHwSw6n503YNANmBqBq8bKcNQqmTnXH
15
- EKvc7liSfSn0STLZtrubHkNe5t2TvUUQNOQBENsU0S8nS+ei+E0xJ6wey2TjN23F
16
- 0CoEbh8/xhH0hoLT3B3GcAwNtwKBgQC51IjKPdlo1jmIUjNcGz76SpcMowkWp0+s
17
- qAEh0ksSCh1Pn4G+YhgoFmFcUahwkyP2CmAtHUrL+atw4b22/jHiJN/IfyhUPP31
18
- 0ereRpi33m2dImz6PzistyM0jPdMAKz+W2wEBmOF6Z78MgaxUZm3s0CeXGYkzWoH
19
- iLQGJyMcYwKBgQDjtusTy8NqCaooziq6mqVDRxlCZqYByKtOFkU9DBhhClbIyQhM
20
- QZGUQVuUmrzEdgEpE60CjDqffZfqZuWFj6pJoB95a7u8wf4SN+LW9VSrNR8NMijc
21
- WbePwwt0cyv7y5tT8vnyy50qK2Tdy2rm4+mzZ/ELgb+79k7yhphSSVbIwQKBgC1u
22
- LjrzP/GHXe1b2z6LUqwyDBeEzDYDlVDqicxQ8xVn756Fqlx28tzqC8dcF0feUQ5X
23
- nweof566XRVtusm//0YAKc2EeMGPX673MOpCbBeXg0jFH8tWJW7kHvE7/UFRcPmG
24
- NDQPs8kLQlj5ifVTs7bbVdLhV/9rUJ6i5xASBV1tAoGAAess1DjK1jnX+v6h0/OP
25
- GFgg2cFB1ZarAstYHgLrLu+1Iuj9RDuTNwyiQDwT8gbz4i43o4zWE0NhQwlhJ84K
26
- EY5BgS8a7sILoZjo+Mfd06bQy0AhgmYtW8mojh9/9vfg42mE2bIlSVLnbWnSkvID
27
- jTFVReA7tpBS7h/Q6rW2hM8=
28
- -----END PRIVATE KEY-----
@@ -1,30 +0,0 @@
1
- -----BEGIN ENCRYPTED PRIVATE KEY-----
2
- MIIFLTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIcpza33KNpC0CAggA
3
- MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBBH4EXXxNpaRGmSXdx4SZI9BIIE
4
- 0OiJGDq7wPbvMDc41zoOOD9dKozvlWJ6I7SXehwFmUrQFQSFyT9NiIw9bhnzQxnL
5
- F8osKdEHAknXKFVEVG4q64fDOiyaUojsBUavuUC1HG9MU9tBJ+gt118LYFTr0zrG
6
- WlFOl/p8kpwtAwrI+qRIrWFADzZExp2vX2b5qnapj9f/26BdjRTJvZtjDC10mBAJ
7
- UYoCAPyjtIOiBmkCQUCtwHJywpMLFZlGyrg+8WiTk2vW3vz+D5KWBYXb9BaLFTu+
8
- E/oeHJH30NDZewhlgi5vUjYE36fXi9TGaz8Zcron4wTUrtrAbV7bTWv8t0AnY7wp
9
- aM8zpsaULZ4XK0xSSA0LYRYYj5EYiYAv3OpQE/cjzRD6pbaAIzifRpsgLSh3UAp5
10
- 45OqzbA3/JkrdsANGspUkrb/x3O6sSg6vgz/ocSlzRaiGcJ0qkFSETcHUCvpWSZD
11
- ltOLsYckgtFpcEzST+HG+hqORNoe4Sx/moJgMOfvlThr32GImj8wgi/czXze85bO
12
- v3HYffLxoQIfaz8XpYmcAfUgw3PMRTfPj5+pqmKXtRmemUHPNIDVFOD0eQWI61af
13
- og4f2OO0c0abELI7V5OlNrqWzAKoV1HtszedffPHNE5eJ+ENbbp68sFKmFLjZzOh
14
- GwhHkauaG9OW0F/wS03fJQdEMVXc8vvW8NAU3438o85Por0fiFfSgJ3Z9281IHBJ
15
- rEJ0nuqDCXJorX/On17qTF7EaXLzidpobdQ4vTg4N+/Q5l+Ep5zYby8Oiu/Hl618
16
- T7R4s3r4ceUHAJeyDli8C7fw761Qwd73qpB9RgbHY5HVZUALNk+TG4aS7kwcZ7CT
17
- MW6/PR+6RkMrwAPsfZwJnErzcrmhodxP3HRP0ikAfX9qbK8n8TIDt7Lb4WIZpqKu
18
- vGNnGScnBVmaGfrbqk6WeK9iAH3XXGYWcsGOFwxPYMl0YymW/MThDS+eIqJhqI4Z
19
- a2mjB/w6g5ANX5YOMbTWqjnsYdqobPRDPN5PEk1wWCYGZq9Hwbt0bHi1bKev/itw
20
- RyK60j25fsVf8RDkrMFaCgP/x/6iMl26TCi3R3W4cW5NlesxWYwNcOxnUwL7OQQT
21
- 8aY1iR/Cn/RoRiZ90D4anCOTYLPX6pTHAPsTHBuU+odAUhXBGvIhSknvCf3xhahW
22
- hUY1yUnEYhgXbYLRCEsa7q48BoSFMibmwbt07YRJXNAGjgcc7bzCV43vc/GeUgdZ
23
- RrS1GNuzO0+S1TfvxfMBNBpoPbkeY2yHlUr+A8j6KHQw5mr3GnoOoeQTdZYK594m
24
- N6J/gxF1emQqJoP+i+mx7iSdf5i2DmV9ACl/tyU92PKocIcsYoIevSmhtliBnsdG
25
- R1kPkoUWuEVZujxzlIXcj0vEtOxyKJmzlBXKKO7B8U4HociBNMM41acX9WsIYdsA
26
- QFjZTyU2DkpOCPRcBFbgQFPwfrkC93hndiByWPCkmAjeHJ0O74fnBCUP5BhmFuuc
27
- /L0WWAVKp8HGgFmiq+i+rznJZEEEEoZClDFNkOBp4yfGZL9yZ2Ot3IRb2HNIJaj1
28
- 69CX7ukHVHPLgiOcRSbFyuZZyqO++kWgEQm5jKlFFqGyFNpHmkGL8CGFlq7x9sF7
29
- ONozML/sxGNw4Ubo6TAPflvl7KOd9bcYJdpODqtJgngi
30
- -----END ENCRYPTED PRIVATE KEY-----
@@ -1,9 +0,0 @@
1
- ---- BEGIN SSH2 PUBLIC KEY ----
2
- Comment: "2048-bit RSA, converted by stantonwjones@darkmatter.lan from"
3
- AAAAB3NzaC1yc2EAAAADAQABAAABAQDPJQsK/daFi/b+7bOSEJcKdzjvNJygX3BvMQ4HY+
4
- JJaiSDyQgtwc8K85XDH0/eWyu5a6OzbadU3SkSdYP+0+uTdxfxRUCChKoASIoAaAfwB/BW
5
- WOIdsuGPhJjYiLnPL4SScFdjUbJXGP5JOSQ6wgsRdqsDeQezUjF0CvR1CXoJaqRQt7p5T9
6
- TlRzzuhN5Vf6BDpXBPTcNyUGKCaUwGQn2QmpXzRXrAZNb7XpzBSXdpUWm9W7U9zCFHva7J
7
- XCuXsC9yMy3w1mpbL+oFBx7Wvic5FqwnATXjM7xBSqcG4tYzrISyn5pj13cIzzk9aEPRI3
8
- qhV6kiA62JofiX1RkxMP+j
9
- ---- END SSH2 PUBLIC KEY ----
@@ -1,23 +0,0 @@
1
- {
2
- "name": "nails_app",
3
- "version": "0.0.0",
4
- "description": "A basic nails application",
5
- "main": "server.js",
6
- "type": "module",
7
- "scripts": {
8
- "test": "echo \"Error: no test specified\" && exit 1",
9
- "start": "node server.js"
10
- },
11
- "author": "",
12
- "license": "BSD",
13
- "bugs": {
14
- "url": "https://github.com/stantonwjones/nails-boilerplate/issues"
15
- },
16
- "config": {
17
- "mongodbMemoryServer": {
18
- "version": "latest"
19
- }
20
- },
21
- "dependencies": {
22
- }
23
- }
@@ -1,21 +0,0 @@
1
- import nails from "../../../../../index.js";
2
- import Dog from "../models/dog.js";
3
- import Owner from "../models/owner.js";
4
-
5
- export default class DefaultJsonController extends nails.Controller {
6
- json = true;
7
- routes = [
8
- ['get', '/listowners'],
9
- ['get', '/listowneddogs'],
10
- ];
11
-
12
- async listowners(params, request, response) {
13
- return await Owner.findAll();
14
- }
15
-
16
- async listowneddogs(params, request, response) {
17
- // await nails._dbConnector.afterInitialization();
18
- // await Dog.sync({alter: true});
19
- return await Dog.findAll();
20
- }
21
- }
@@ -1,39 +0,0 @@
1
- export default function HomeController() {
2
- this.index = function(params, request, response) {
3
- console.log("HOME::INDEX");
4
- response.json({
5
- home_index: true
6
- });
7
- };
8
- this.testaction = function(params, request, response) {
9
- response.json({
10
- home_testaction: true
11
- });
12
- }
13
- this.test_ejs = function() {
14
- };
15
- /*
16
- this.public_index = function(params, request, response) {
17
- response.public({path: 'index.html'});
18
- };
19
- this.json = function(params, request, response) {
20
- response.json({test: 'json'});
21
- };
22
- // By setting a method to asynchronous, Nails will wait for an
23
- // explicit response to the client. Otherwise, it will attempt
24
- // to respond with a view immediately after the action terminates.
25
- this.json.async = true;
26
-
27
- this.test_model = function(params, request, response) {
28
- var u = new User();
29
- u.set('created_at', (new Date()).getTime());
30
- u.save();
31
- response.json({new_user_id: u.id.toString()});
32
- };
33
- this.test_id_template = function(params, request, response) {
34
- var varz = {};
35
- varz.id = params.id || "no id set";
36
- response.render('test_id', varz);
37
- };
38
- */
39
- }
@@ -1,7 +0,0 @@
1
- import nails from '../../../../../index.js';
2
- import { DataTypes } from 'sequelize';
3
- const dogSchema = {
4
- good: DataTypes.BOOLEAN,
5
- name: DataTypes.STRING,
6
- };
7
- export default class Dog extends new nails.Model("Dog", dogSchema) {};
@@ -1,10 +0,0 @@
1
- import nails from '../../../../../index.js';
2
- import { DataTypes } from 'sequelize';
3
- import Dog from './dog.js';
4
- const ownerSchema = {
5
- name: DataTypes.STRING,
6
- };
7
- class Owner extends new nails.Model("Owner", ownerSchema) {};
8
- Owner.hasMany(Dog);
9
- await Dog.sync();
10
- export default Owner;
@@ -1,15 +0,0 @@
1
- /* jshint esversion: 6 */
2
- var React = require('react');
3
-
4
- class TestReact extends React.Component {
5
- render() {
6
- return (
7
- <html>
8
- <head><title>react</title></head>
9
- <body>react works!</body>
10
- </html>
11
- );
12
- }
13
- }
14
-
15
- module.exports = TestReact;
@@ -1,9 +0,0 @@
1
- // var nails = require('../../../index.js');
2
- import nails from '../../../index.js';
3
- import service_config from './config/service.js';
4
-
5
- // See self-documented config files
6
- // var service_config = require('./config/service.js');
7
- // console.log("starting server")
8
- (await nails( service_config )).startServer();
9
- export default nails; // export nails for testing