lincd-cli 0.1.11 → 0.1.12

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 (61) hide show
  1. package/defaults/app/Gruntfile.js +2 -10
  2. package/defaults/app/package.json +1 -1
  3. package/defaults/app/src/App.scss +3 -0
  4. package/defaults/app/src/App.tsx +1 -1
  5. package/defaults/app2/backend/src/server.js +152 -0
  6. package/defaults/app2/backend/src/server.js.map +1 -0
  7. package/defaults/app2/backend/src/server.tsx +137 -0
  8. package/defaults/app2/frontend/scripts/build.js +100 -0
  9. package/defaults/app2/frontend/src/App.js +52 -0
  10. package/defaults/app2/frontend/src/App.js.map +1 -0
  11. package/defaults/app2/frontend/src/App.tsx +35 -0
  12. package/defaults/app2/frontend/src/Html.js +12 -0
  13. package/defaults/app2/frontend/src/Html.js.map +0 -0
  14. package/defaults/app2/frontend/src/Html.tsx +29 -0
  15. package/defaults/app2/frontend/src/Layout.js +153 -0
  16. package/defaults/app2/frontend/src/Layout.js.map +1 -0
  17. package/defaults/app2/frontend/src/Layout.tsx +5 -0
  18. package/defaults/app2/frontend/src/Spinner.js +9 -0
  19. package/defaults/app2/frontend/src/Spinner.js.map +0 -0
  20. package/defaults/app2/frontend/src/Spinner.scss +17 -0
  21. package/defaults/app2/frontend/src/Spinner.tsx +10 -0
  22. package/defaults/app2/frontend/src/index.js +14 -0
  23. package/defaults/app2/frontend/src/index.js.map +0 -0
  24. package/defaults/app2/frontend/src/index.tsx +16 -0
  25. package/defaults/app2/frontend/web/favicon.ico +0 -0
  26. package/defaults/app2/package.json +71 -0
  27. package/defaults/app2/tailwind.config.js +3 -0
  28. package/defaults/app2/tsconfig.json +17 -0
  29. package/defaults/app3/.env-cmdrc +12 -0
  30. package/defaults/app3/backend/server.js +5 -0
  31. package/defaults/app3/frontend/scripts/build.js +34 -0
  32. package/defaults/app3/frontend/scripts/webpack-config.js +121 -0
  33. package/defaults/app3/frontend/src/App.tsx +72 -0
  34. package/defaults/app3/frontend/src/Header.tsx +16 -0
  35. package/defaults/app3/frontend/src/Html.tsx +29 -0
  36. package/defaults/app3/frontend/src/Layout.tsx +11 -0
  37. package/defaults/app3/frontend/src/_tailwind.scss +3 -0
  38. package/defaults/app3/frontend/src/components/Spinner.scss +17 -0
  39. package/defaults/app3/frontend/src/components/Spinner.tsx +10 -0
  40. package/defaults/app3/frontend/src/index.tsx +20 -0
  41. package/defaults/app3/frontend/src/pages/Home.tsx +15 -0
  42. package/defaults/app3/frontend/src/pages/Page1.scss +3 -0
  43. package/defaults/app3/frontend/src/pages/Page1.scss.json +1 -0
  44. package/defaults/app3/frontend/src/pages/Page1.tsx +15 -0
  45. package/defaults/app3/frontend/src/pages/Page2.scss +16 -0
  46. package/defaults/app3/frontend/src/pages/Page2.scss.json +1 -0
  47. package/defaults/app3/frontend/src/pages/Page2.tsx +21 -0
  48. package/defaults/app3/frontend/web/favicon.ico +0 -0
  49. package/defaults/app3/package.json +76 -0
  50. package/defaults/app3/tailwind.config.js +3 -0
  51. package/defaults/app3/tsconfig.json +17 -0
  52. package/defaults/module/package.json +1 -1
  53. package/defaults/module/src/ontologies/example-ontology.ts +1 -1
  54. package/lib/cli.js +21 -25
  55. package/lib/config-grunt.js +2 -2
  56. package/lib/config-webpack.js +19 -7
  57. package/lib/utils.js +1 -1
  58. package/package.json +4 -3
  59. package/cli.js +0 -1209
  60. package/config-generator.js +0 -568
  61. package/index.js +0 -26
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import {Header} from './Header';
3
+
4
+ export default function Layout({children}) {
5
+ return (
6
+ <main className="m-8 font-sans">
7
+ <Header />
8
+ {children}
9
+ </main>
10
+ );
11
+ }
@@ -0,0 +1,3 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
@@ -0,0 +1,17 @@
1
+
2
+ .spinner.spinner--active {
3
+ border: 4px solid #474545;
4
+ border-top: 4px solid lightblue;
5
+ border-radius: 50%;
6
+ width: 24px;
7
+ height: 24px;
8
+ animation: spin 1s linear infinite;
9
+ }
10
+ @keyframes spin {
11
+ 0% {
12
+ transform: rotate(0deg);
13
+ }
14
+ 100% {
15
+ transform: rotate(360deg);
16
+ }
17
+ }
@@ -0,0 +1,10 @@
1
+ import './Spinner.scss';
2
+ export default function Spinner({active = true}) {
3
+ return (
4
+ <div
5
+ className={['spinner', active && 'spinner--active'].join(' ')}
6
+ role="progressbar"
7
+ aria-busy={active ? 'true' : 'false'}
8
+ />
9
+ );
10
+ }
@@ -0,0 +1,20 @@
1
+ window['$RefreshReg$'] = () => {};
2
+ window['$RefreshSig$'] = () => () => {};
3
+
4
+ import {hydrateRoot} from 'react-dom/client';
5
+ import {BrowserRouter} from 'react-router-dom';
6
+ import App from './App';
7
+ import React from 'react';
8
+
9
+ //comment out if you don't want to use tailwind
10
+ import './_tailwind.scss';
11
+
12
+
13
+ hydrateRoot(
14
+ document,
15
+ <React.StrictMode>
16
+ <BrowserRouter>
17
+ <App assets={window['assetManifest']} />
18
+ </BrowserRouter>
19
+ </React.StrictMode>,
20
+ );
@@ -0,0 +1,15 @@
1
+ export default function Home() {
2
+ return (
3
+ <div>
4
+ <h1 className="my-2 text-xl font-bold">${name}</h1>
5
+ <h2 className="my-2 text-lg font-bold">Get started</h2>
6
+ <p>
7
+ Your LINCD App is ready to go!<br />
8
+ To edit this file, open:
9
+ </p>
10
+ <code className="font-mono my-2 bg-blue-100 p-2 block">
11
+ <pre>/frontend/src/pages/Home.tsx</pre>
12
+ </code>
13
+ </div>
14
+ );
15
+ }
@@ -0,0 +1,3 @@
1
+ .page1 {
2
+ display:block;
3
+ }
@@ -0,0 +1 @@
1
+ {"page1":"test_app_123_Page1_page1"}
@@ -0,0 +1,15 @@
1
+ import "./Page1.scss";
2
+ export default function Page1() {
3
+ return (
4
+ <div className="page1">
5
+ This page is styled with SASS. Simply import the relevant .scss file in your code to include it in the bundle.
6
+ Using this setup, class names will have a global scope.<br />
7
+ <br />
8
+ See:
9
+ <code className="font-mono my-2 bg-blue-100 p-2 block">
10
+ <pre>/frontend/src/pages/Page1.tsx</pre>
11
+ </code>
12
+
13
+ </div>
14
+ );
15
+ }
@@ -0,0 +1,16 @@
1
+ .page2 {
2
+ display:block;
3
+ span {
4
+ font-style:italic;
5
+ }
6
+ h1 {
7
+ font-size:1.5rem;
8
+ }
9
+ code {
10
+ font-family: monospace;
11
+ margin: 0.5rem 0;
12
+ background-color:lightcyan;
13
+ padding: 0.5rem;
14
+ display:block;
15
+ }
16
+ }
@@ -0,0 +1 @@
1
+ {"page2":"test_app_123_Page2_page2"}
@@ -0,0 +1,21 @@
1
+ import "./Page2.scss";
2
+ import * as style from "./Page2.scss.json";
3
+ export default function Page2() {
4
+ return (
5
+ <div className={style.page2}>
6
+ <h1>Example page using SASS + CSS Modules</h1>
7
+ This page is styled with SASS + CSS Modules. It imports the relevant .scss file{' '}
8
+ <span>and the generated .scss.json file</span>.<br />
9
+ <br />
10
+ Using this setup your class names will be scoped to the file(s)
11
+ where you use them. The typescript compiler will also auto complete class names and warn you if you're using class
12
+ names that don't exists.
13
+ <br />
14
+ <br />
15
+ See:
16
+ <code>
17
+ <pre>/frontend/src/pages/Page2.tsx</pre>
18
+ </code>
19
+ </div>
20
+ );
21
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "name": "${hyphen_name}",
3
+ "displayName": "${name}",
4
+ "description": "",
5
+ "version": "0.1.0",
6
+ "private": true,
7
+ "author": "",
8
+ "engines": {
9
+ "node": ">=16.0.0"
10
+ },
11
+ "main": "backend/src/server.js",
12
+ "license": "MIT",
13
+ "scripts": {
14
+ "start": "npm run server:dev",
15
+ "start-full": "concurrently --names \"_TSC,SERV\" \"npm run tsc\" \"npm run server:dev\"",
16
+ "build:prod": "npm run bundler:prod && npm run tsc:prod",
17
+ "server:dev": "env-cmd -e dev nodemon --watch ../../modules/lincd-server/lib --delay 0.5 ./backend/server.js",
18
+ "server:prod": "env-cmd -e prod nodemon -e js,json --delay 1 ./backend/server.js",
19
+ "tsc": "cross-env NODE_ENV=development tsc --watch --project ./tsconfig.json",
20
+ "tsc:prod": "cross-env NODE_ENV=production tsc --project ./tsconfig.json",
21
+ "bundler:dev": "cross-env NODE_ENV=development nodemon --watch frontend/scripts frontend/scripts/build.js",
22
+ "bundler:prod": "cross-env NODE_ENV=production node frontend/scripts/build.js",
23
+ "setup": "cross-env NODE_ENV=development tsc --project ./tsconfig.json"
24
+ },
25
+ "keywords": [
26
+ "lincd",
27
+ "linked code",
28
+ "linked data",
29
+ "semantic web",
30
+ "web3"
31
+ ],
32
+ "dependencies": {
33
+ "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7",
34
+ "fork-ts-checker-webpack-plugin": "6.2.6",
35
+ "is-object": "^1.0.2",
36
+ "lincd": "^0.3",
37
+ "lincd-jsonld": "^0.1",
38
+ "react": "^18.2",
39
+ "react-dom": "^18.2",
40
+ "react-error-boundary": "^3.1.3",
41
+ "react-refresh": "^0.14.0",
42
+ "react-refresh-typescript": "^2.0.7",
43
+ "react-router-dom": "^6.3.0",
44
+ "webpack-dev-middleware": "^5.3.3",
45
+ "webpack-hot-middleware": "^2.25.2"
46
+ },
47
+ "devDependencies": {
48
+ "@types/node": "^17.0.30",
49
+ "@types/react": "^18.0.17",
50
+ "@types/react-dom": "^18.0.6",
51
+ "chalk": "4.1.2",
52
+ "classnames": "^2.3.1",
53
+ "compression": "^1.7.4",
54
+ "concurrently": "^5.3.0",
55
+ "cors": "^2.8.5",
56
+ "cross-env": "^7.0.3",
57
+ "env-cmd": "^10.1.0",
58
+ "css-loader": "^5.2.7",
59
+ "express": "^4.17.1",
60
+ "lincd-cli": "^0.1",
61
+ "mini-css-extract-plugin": "^1.3.3",
62
+ "nodemon": "^2.0.6",
63
+ "postcss": "^8.4.14",
64
+ "postcss-import": "^14.1.0",
65
+ "postcss-modules": "",
66
+ "postcss-nested": "^5.0.6",
67
+ "prettier": "1.19.1",
68
+ "resolve": "1.12.0",
69
+ "sass-loader": "^10.0",
70
+ "tailwindcss": "^3.0.24",
71
+ "ts-loader": "^8.0.12",
72
+ "typescript": "4.6.4",
73
+ "webpack": "4.44.2",
74
+ "webpack-cli": "^4.2.0"
75
+ }
76
+ }
@@ -0,0 +1,3 @@
1
+ module.exports = {
2
+ content: ['./frontend/src/**/*.{tsx,ts}'],
3
+ };
@@ -0,0 +1,17 @@
1
+ {
2
+ "compilerOptions": {
3
+ "module": "commonjs",
4
+ "moduleResolution": "node",
5
+ "sourceMap": true,
6
+ "target": "es2019",
7
+ "declaration": false,
8
+ "experimentalDecorators": true,
9
+ "emitDecoratorMetadata": true,
10
+ "esModuleInterop": true,
11
+ "resolveJsonModule": true,
12
+ "jsx": "react-jsx",
13
+ "types": ["node", "react", "react-dom"],
14
+ "pretty": true
15
+ },
16
+ "files": ["./frontend/src/index.tsx"]
17
+ }
@@ -29,7 +29,7 @@
29
29
  "web3"
30
30
  ],
31
31
  "dependencies": {
32
- "lincd": "^0.2",
32
+ "lincd": "^0.3",
33
33
  "lincd-jsonld": "^0.1"
34
34
  },
35
35
  "devDependencies": {
@@ -1,5 +1,5 @@
1
1
  import {NamedNode} from 'lincd/lib/models';
2
- import {JSONLD} from 'lincd-jsonld/lib/JSONLD';
2
+ import {JSONLD} from 'lincd-jsonld/lib/utils/JSONLD';
3
3
  import {createNameSpace} from 'lincd/lib/utils/NameSpace';
4
4
  import {linkedOntology} from '../module';
5
5
  //import all the exports of this file as one variable called _this (we need this at the end)
package/lib/cli.js CHANGED
@@ -62,7 +62,7 @@ program
62
62
  return createApp(name);
63
63
  })
64
64
  .description('Creates a new folder with all the required files for a LINCD app')
65
- .argument('<name>', 'the name of your LINCD app');
65
+ .argument('<name>', 'the name of your LINCD app. To use spaces, wrap the name in double quotes.');
66
66
  program
67
67
  .command('create-module')
68
68
  .action(function (name, uriBase) {
@@ -138,12 +138,15 @@ program.command('dev [target] [mode]').action(function (target, mode) {
138
138
  program
139
139
  .command('module|m')
140
140
  .action(function (name, command, args) {
141
- var fullCommand = (command ? command + ' ' +
142
- ' ' +
143
- args
144
- .slice(0, 3)
145
- .filter(function (a) { return a && true; })
146
- .join(' ') : null);
141
+ var fullCommand = command
142
+ ? command +
143
+ ' ' +
144
+ ' ' +
145
+ args
146
+ .slice(0, 3)
147
+ .filter(function (a) { return a && true; })
148
+ .join(' ')
149
+ : null;
147
150
  executeCommandForModule(name, fullCommand);
148
151
  })
149
152
  .alias('m')
@@ -819,7 +822,7 @@ var createModule = function (name, uriBase, basePath) {
819
822
  var createApp = function (name, basePath) {
820
823
  if (basePath === void 0) { basePath = process.cwd(); }
821
824
  return __awaiter(void 0, void 0, void 0, function () {
822
- var _a, hyphenName, camelCaseName, underscoreName, targetFolder, hasYarn, installCommand, lincdCommand;
825
+ var _a, hyphenName, camelCaseName, underscoreName, targetFolder, hasYarn, installCommand, runCommand;
823
826
  return __generator(this, function (_b) {
824
827
  switch (_b.label) {
825
828
  case 0:
@@ -831,30 +834,22 @@ var createApp = function (name, basePath) {
831
834
  if (!fs.existsSync(targetFolder)) {
832
835
  fs.mkdirSync(targetFolder);
833
836
  }
834
- fs.copySync(path.join(__dirname, '..', 'defaults', 'app'), targetFolder);
835
- // let codeName = cleanPackageName.replace(/\-/g, '_');
836
- // let cameCaseName = camelCase(name); //some-module --> someModule
837
- // let underscoreName = name.replace(/[-\s]+/g, '_');
838
- // setVariable('uri_base', uriBase);
839
- //longer similar variables names should come before the shorter ones
840
- // setVariable('camelcase_name', cameCaseName);
841
- // setVariable('underscore_name', underscoreName);
842
- // setVariable('app_name', name);
837
+ fs.copySync(path.join(__dirname, '..', 'defaults', 'app3'), targetFolder);
838
+ // fs.copySync(path.join(__dirname, '..', 'defaults', 'app'), targetFolder);
843
839
  log("Creating new LINCD application '" + name + "'");
844
840
  //replace variables in some of the copied files
845
- replaceVariablesInFilesWithRoot(targetFolder, 'package.json', 'index.html', 'Gruntfile.js', 'src/index.tsx', 'src/App.tsx');
841
+ replaceVariablesInFilesWithRoot(targetFolder, 'package.json', 'frontend/src/App.tsx', 'frontend/src/Header.tsx', 'frontend/src/pages/Home.tsx');
846
842
  return [4 /*yield*/, hasYarnInstalled()];
847
843
  case 1:
848
844
  hasYarn = _b.sent();
849
845
  installCommand = hasYarn ? 'yarn install' : 'npm install';
850
- lincdCommand = hasYarn ? 'yarn lincd' : 'npm exec lincd';
851
- return [4 /*yield*/, execp("cd ".concat(hyphenName, " && ").concat(installCommand, " && ").concat(hasYarn ? 'yarn' : 'npm exec', " lincd build"), true)["catch"](function (err) {
852
- console.warn('Could not install dependencies');
846
+ runCommand = hasYarn ? 'yarn' : 'npm run';
847
+ return [4 /*yield*/, execp("cd ".concat(hyphenName, " && ").concat(installCommand, " && ").concat(runCommand, " setup"), true)["catch"](function (err) {
848
+ console.warn('Could not install dependencies or start application');
853
849
  })];
854
850
  case 2:
855
851
  _b.sent();
856
- open(path.join(targetFolder, 'index.html'));
857
- log("Your LINCD App starting setup is ready.", "Run ".concat(chalk.blueBright('cd ' + hyphenName), " and then \n - ").concat(chalk.blueBright(lincdCommand + ' build'), " to build once or \n - ").concat(chalk.blueBright(lincdCommand + ' dev'), " to continuously rebuild on file changes"));
852
+ log("Your LINCD App is ready at ".concat(chalk.blueBright(targetFolder)), "To start, run\n".concat(chalk.blueBright("cd ".concat(hyphenName)), " and then ").concat(chalk.blueBright((hasYarn ? 'yarn' : 'npm') + ' start')));
858
853
  return [2 /*return*/];
859
854
  }
860
855
  });
@@ -918,6 +913,7 @@ var register = function (registryURL) {
918
913
  var version = pack.version;
919
914
  var moduleName = pack.name;
920
915
  var author = pack.author;
916
+ var description = pack.description;
921
917
  console.log(chalk.cyan('registering ' + author + "'s module, " + moduleName + ' ' + version + ' in the LINCD registry'));
922
918
  return fetch(registryURL + '/register', {
923
919
  method: 'POST',
@@ -925,7 +921,7 @@ var register = function (registryURL) {
925
921
  Accept: 'application/json, text/plain, */*',
926
922
  'Content-Type': 'application/json'
927
923
  },
928
- body: JSON.stringify({ package: moduleName, version: version })
924
+ body: JSON.stringify({ package: moduleName, version: version, description: description })
929
925
  })
930
926
  .then(function (res) { return res.json(); })
931
927
  .then(function (json) {
@@ -1224,7 +1220,7 @@ var executeCommandForModule = function (moduleName, command) {
1224
1220
  return execp('cd ' + moduleDetails.path + ' && yarn lincd' + (command ? ' ' + command : ''));
1225
1221
  }
1226
1222
  else {
1227
- warn("Could not find a module who\'s name (partially) matched " + chalk.cyan(moduleName));
1223
+ warn("Could not find a module who's name (partially) matched " + chalk.cyan(moduleName));
1228
1224
  }
1229
1225
  };
1230
1226
  program.parse(process.argv);
@@ -22,8 +22,8 @@ function generateGruntConfig(moduleName, config) {
22
22
  }
23
23
  exports["default"] = generateGruntConfig;
24
24
  function setupGrunt(grunt, moduleName, config) {
25
- var buildServer = !config.environment || config.environment == 'server';
26
- var buildFrontend = !config.environment || config.environment == 'frontend';
25
+ var buildServer = !config.environment || config.environment == 'nodejs' || config.environment == 'polymorphic';
26
+ var buildFrontend = !config.environment || config.environment == 'browser' || config.environment == 'polymorphic';
27
27
  //when not specified and we ARe building frontend OR we are compiling the server for es5.. or if simply specified, then es5 is targeted
28
28
  var targetES5 = (!config.target && (buildFrontend || config.es5Server)) || config.target == 'es5';
29
29
  var targetES6 = !config.target || config.target == 'es6';
@@ -78,16 +78,28 @@ function generateWebpackConfig(buildName, moduleName, config) {
78
78
  if (config.debug) {
79
79
  plugins.push(new watch_run_1["default"]());
80
80
  }
81
- if (config.afterBuildCommand) {
81
+ if (config.afterBuildCommand || config.afterFirstBuildCommand) {
82
+ var executedFirstCommand_1 = false;
82
83
  plugins.push({
83
84
  apply: function (compiler) {
84
85
  compiler.hooks.afterEmit.tap('AfterEmitPlugin', function (compilation) {
85
- exec(config.afterBuildCommand, function (err, stdout, stderr) {
86
- if (stdout)
87
- process.stdout.write(stdout);
88
- if (stderr)
89
- process.stderr.write(stderr);
90
- });
86
+ if (config.afterBuildCommand) {
87
+ exec(config.afterBuildCommand, function (err, stdout, stderr) {
88
+ if (stdout)
89
+ process.stdout.write(stdout);
90
+ if (stderr)
91
+ process.stderr.write(stderr);
92
+ });
93
+ }
94
+ if (config.afterFirstBuildCommand && !executedFirstCommand_1) {
95
+ executedFirstCommand_1 = true;
96
+ exec(config.afterFirstBuildCommand, function (err, stdout, stderr) {
97
+ if (stdout)
98
+ process.stdout.write(stdout);
99
+ if (stderr)
100
+ process.stderr.write(stderr);
101
+ });
102
+ }
91
103
  });
92
104
  }
93
105
  });
package/lib/utils.js CHANGED
@@ -31,7 +31,7 @@ var fs = __importStar(require("fs"));
31
31
  var path = __importStar(require("path"));
32
32
  var SHACL_1 = require("lincd/lib/shapes/SHACL");
33
33
  var CoreSet_1 = require("lincd/lib/collections/CoreSet");
34
- var JSONLDWriter_1 = require("lincd-jsonld/lib/JSONLDWriter");
34
+ var JSONLDWriter_1 = require("lincd-jsonld/lib/utils/JSONLDWriter");
35
35
  var chalk_1 = __importDefault(require("chalk"));
36
36
  var getPackageJSON = function (root, error) {
37
37
  if (root === void 0) { root = process.cwd(); }
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "lincd-cli",
3
- "version": "0.1.11",
3
+ "version": "0.1.12",
4
4
  "description": "Command line tools for the lincd.js library",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
7
7
  "prepublishOnly": "npm exec tsc",
8
- "build": "npm exec tsc"
8
+ "build": "npm exec tsc",
9
+ "dev": "npm exec tsc -w"
9
10
  },
10
11
  "lincd_util": true,
11
12
  "keywords": [
@@ -44,7 +45,7 @@
44
45
  "grunt-ts": "^6.0.0-beta.22",
45
46
  "grunt-webpack": "^4.0.2",
46
47
  "license-info-webpack-plugin": "^3.0.0",
47
- "lincd": "^0.2",
48
+ "lincd": "^0.3",
48
49
  "lincd-jsonld": "^0.1.4",
49
50
  "load-grunt-tasks": "^5.1.0",
50
51
  "mini-css-extract-plugin": "^1.3.3",