hoodcms 5.0.7 → 5.0.11

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 (74) hide show
  1. package/README.md +8 -6
  2. package/dist/js/admin.js +5 -5
  3. package/dist/js/app.js +4 -11
  4. package/dist/js/core/Alerts.d.ts +22 -0
  5. package/dist/js/core/Alerts.js +151 -0
  6. package/dist/js/core/BaseSite.d.ts +6 -0
  7. package/dist/js/core/BaseSite.js +14 -0
  8. package/dist/js/core/ColorPicker.d.ts +5 -0
  9. package/dist/js/core/ColorPicker.js +71 -0
  10. package/dist/js/core/DataList.d.ts +35 -0
  11. package/dist/js/core/DataList.js +56 -0
  12. package/dist/js/core/Editors.d.ts +16 -0
  13. package/dist/js/core/Editors.js +137 -0
  14. package/dist/js/core/Handlers.d.ts +47 -0
  15. package/dist/js/core/Handlers.js +160 -0
  16. package/dist/js/core/Helpers.d.ts +8 -0
  17. package/dist/js/core/Helpers.js +50 -0
  18. package/dist/js/core/HoodApi.d.ts +25 -0
  19. package/dist/js/core/HoodApi.js +22 -0
  20. package/dist/js/core/Inline.d.ts +27 -0
  21. package/dist/js/core/Inline.js +63 -0
  22. package/dist/js/core/Loader.d.ts +5 -0
  23. package/dist/js/core/Loader.js +13 -0
  24. package/dist/js/core/Media.d.ts +113 -0
  25. package/dist/js/core/Media.js +363 -0
  26. package/dist/js/core/Modal.d.ts +35 -0
  27. package/dist/js/core/Modal.js +69 -0
  28. package/dist/js/core/RandomStringGenerator.d.ts +11 -0
  29. package/dist/js/core/RandomStringGenerator.js +23 -0
  30. package/dist/js/core/Response.d.ts +20 -0
  31. package/dist/js/core/Response.js +13 -0
  32. package/dist/js/core/Uploader.d.ts +7 -0
  33. package/dist/js/core/Uploader.js +134 -0
  34. package/dist/js/core/Validator.d.ts +27 -0
  35. package/dist/js/core/Validator.js +80 -0
  36. package/dist/js/extensions/jqueryExtensions.d.ts +11 -0
  37. package/dist/js/extensions/jqueryExtensions.js +99 -0
  38. package/dist/js/extensions/numberExtensions.d.ts +8 -0
  39. package/dist/js/extensions/numberExtensions.js +19 -0
  40. package/dist/js/extensions/stringExtensions.d.ts +12 -0
  41. package/dist/js/extensions/stringExtensions.js +49 -0
  42. package/dist/js/index.d.ts +23 -0
  43. package/dist/js/index.js +23 -0
  44. package/dist/js/interfaces/KeyValue.d.ts +4 -0
  45. package/dist/js/interfaces/KeyValue.js +1 -0
  46. package/dist/js/login.js +1 -1
  47. package/dist/js/models/Content.d.ts +50 -0
  48. package/dist/js/models/Content.js +1 -0
  49. package/dist/js/models/Property.d.ts +9 -0
  50. package/dist/js/models/Property.js +2 -0
  51. package/dist/js/models/Users.d.ts +7 -0
  52. package/dist/js/models/Users.js +2 -0
  53. package/package.json +58 -55
  54. package/src/css/admin.css.map +1 -1
  55. package/src/css/editor.css.map +1 -1
  56. package/src/css/install.css.map +1 -1
  57. package/src/css/login.css.map +1 -1
  58. package/src/js/admin.js +231 -221
  59. package/src/js/admin.js.map +1 -1
  60. package/src/js/app.js +12 -30254
  61. package/src/js/app.js.map +1 -1
  62. package/src/js/login.js +1 -1
  63. package/src/scss/admin.scss +2 -6
  64. package/src/scss/app.scss +2 -2
  65. package/src/scss/editor.scss +2 -3
  66. package/src/scss/install.scss +1 -1
  67. package/src/scss/login.scss +2 -16
  68. package/src/ts/admin.ts +2 -6
  69. package/src/ts/app.ts +0 -2
  70. package/src/ts/core/BaseSite.ts +21 -0
  71. package/src/ts/core/Handlers.ts +0 -2
  72. package/src/ts/core/Helpers.ts +4 -0
  73. package/src/ts/index.ts +26 -0
  74. package/src/ts/hood.ts +0 -5
@@ -0,0 +1,27 @@
1
+ import { Response } from "./Response";
2
+ export interface ValidatorOptions {
3
+ errorAlert?: string;
4
+ /**
5
+ * Called before the submit of the form data, you can return the data to be serialised.
6
+ */
7
+ onSubmit?: (sender: Validator) => void;
8
+ /**
9
+ * Called when submit is complete.
10
+ */
11
+ onComplete?: (data: Response, sender?: Validator) => void;
12
+ /**
13
+ * Called when an error occurs.
14
+ */
15
+ onError?: (jqXHR: any, textStatus: any, errorThrown: any) => void;
16
+ serializationFunction?: () => string;
17
+ useAjax?: boolean;
18
+ }
19
+ export declare class Validator {
20
+ element: HTMLFormElement;
21
+ options: ValidatorOptions;
22
+ /**
23
+ * @param element The datalist element. The element must have a data-url attribute to connect to a feed.
24
+ */
25
+ constructor(element: HTMLFormElement, options: ValidatorOptions);
26
+ submitForm(): void;
27
+ }
@@ -0,0 +1,80 @@
1
+ import { Alerts } from "./Alerts";
2
+ import { Inline } from "./Inline";
3
+ export class Validator {
4
+ /**
5
+ * @param element The datalist element. The element must have a data-url attribute to connect to a feed.
6
+ */
7
+ constructor(element, options) {
8
+ this.options = {
9
+ errorAlert: 'There are errors, please check the form.',
10
+ useAjax: true
11
+ };
12
+ this.element = element;
13
+ if (!this.element) {
14
+ return;
15
+ }
16
+ this.options.serializationFunction = function () {
17
+ let rtn = $(this.element).serialize();
18
+ return rtn;
19
+ }.bind(this);
20
+ this.options = Object.assign(Object.assign({}, this.options), options);
21
+ this.element.addEventListener('submit', function (e) {
22
+ e.preventDefault();
23
+ e.stopImmediatePropagation();
24
+ this.submitForm();
25
+ }.bind(this));
26
+ var tag = '[data-submit="#' + this.element.id + '"]';
27
+ let submitButtons = $(tag);
28
+ if (submitButtons) {
29
+ submitButtons.on('click', function (e) {
30
+ e.preventDefault();
31
+ e.stopImmediatePropagation();
32
+ let exit = $(e.currentTarget).data('exit');
33
+ if (exit) {
34
+ $(this.element).find("input#exit").remove();
35
+ $("<input id='exit' />").attr("type", "hidden")
36
+ .attr("name", "exit")
37
+ .attr("value", "true")
38
+ .appendTo(this.element);
39
+ }
40
+ this.submitForm();
41
+ }.bind(this));
42
+ }
43
+ }
44
+ submitForm() {
45
+ var _a;
46
+ this.element.classList.add('was-validated');
47
+ if (this.element.checkValidity()) {
48
+ this.element.classList.add('loading');
49
+ let checkboxes = this.element.querySelector('input[type=checkbox]');
50
+ if (checkboxes) {
51
+ Array.prototype.slice.call(checkboxes)
52
+ .forEach(function (checkbox) {
53
+ if ($(this).is(':checked')) {
54
+ $(this).val('true');
55
+ }
56
+ });
57
+ }
58
+ if (this.options.onSubmit) {
59
+ this.options.onSubmit(this);
60
+ }
61
+ if (this.options.useAjax) {
62
+ let formData = this.options.serializationFunction();
63
+ $.post(this.element.action, formData, function (data) {
64
+ if (this.options.onComplete) {
65
+ this.options.onComplete(data, this);
66
+ }
67
+ }.bind(this))
68
+ .fail((_a = this.options.onError) !== null && _a !== void 0 ? _a : Inline.handleError);
69
+ }
70
+ else {
71
+ this.element.submit();
72
+ }
73
+ }
74
+ else {
75
+ if (this.options.errorAlert) {
76
+ Alerts.error(this.options.errorAlert, null, 5000);
77
+ }
78
+ }
79
+ }
80
+ }
@@ -0,0 +1,11 @@
1
+ declare global {
2
+ interface JQuery {
3
+ exists(): number;
4
+ restrictToSlug(): void;
5
+ restrictToPageSlug(): void;
6
+ restrictToMetaSlug(): void;
7
+ characterCounter(): void;
8
+ warningAlert(): void;
9
+ }
10
+ }
11
+ export {};
@@ -0,0 +1,99 @@
1
+ import { Alerts } from '../core/Alerts';
2
+ $.fn.exists = function () {
3
+ return $(this).length;
4
+ };
5
+ $.fn.restrictToSlug = function (restrictPattern = /[^0-9a-zA-Z]*/g) {
6
+ let targets = $(this);
7
+ // The characters inside this pattern are accepted
8
+ // and everything else will be 'cleaned'
9
+ // For example 'ABCdEfGhI5' become 'ABCEGI5'
10
+ var restrictHandler = function () {
11
+ var val = $(this).val();
12
+ var newVal = val.replace(restrictPattern, '');
13
+ // This condition is to prevent selection and keyboard navigation issues
14
+ if (val !== newVal) {
15
+ $(this).val(newVal);
16
+ }
17
+ };
18
+ targets.on('keyup', restrictHandler);
19
+ targets.on('paste', restrictHandler);
20
+ targets.on('change', restrictHandler);
21
+ };
22
+ $.fn.restrictToPageSlug = function (restrictPattern = /[^0-9a-zA-Z-//]*/g) {
23
+ let targets = $(this);
24
+ // The characters inside this pattern are accepted
25
+ // and everything else will be 'cleaned'
26
+ let restrictHandler = function () {
27
+ var val = $(this).val();
28
+ var newVal = val.replace(restrictPattern, '');
29
+ if ((newVal.match(new RegExp("/", "g")) || []).length > 4) {
30
+ var pos = newVal.lastIndexOf('/');
31
+ newVal = newVal.substring(0, pos) + newVal.substring(pos + 1);
32
+ Alerts.warning("You can only have up to 4 '/' characters in a url slug.");
33
+ }
34
+ // This condition is to prevent selection and keyboard navigation issues
35
+ if (val !== newVal) {
36
+ $(this).val(newVal);
37
+ }
38
+ };
39
+ targets.on('keyup', restrictHandler);
40
+ targets.on('paste', restrictHandler);
41
+ targets.on('change', restrictHandler);
42
+ };
43
+ $.fn.restrictToMetaSlug = function (restrictPattern = /[^0-9a-zA-Z.]*/g) {
44
+ let targets = $(this);
45
+ // The characters inside this pattern are accepted
46
+ // and everything else will be 'cleaned'
47
+ let restrictHandler = function () {
48
+ let val = $(this).val();
49
+ let newVal = val.replace(restrictPattern, '');
50
+ if ((newVal.match(new RegExp(".", "g")) || []).length > 1) {
51
+ let pos = newVal.lastIndexOf('.');
52
+ newVal = newVal.substring(0, pos) + newVal.substring(pos + 1);
53
+ Alerts.warning("You can only have up to 1 '.' characters in a meta slug.");
54
+ }
55
+ // This condition is to prevent selection and keyboard navigation issues
56
+ if (val !== newVal) {
57
+ $(this).val(newVal);
58
+ }
59
+ };
60
+ targets.on('keyup', restrictHandler);
61
+ targets.on('paste', restrictHandler);
62
+ targets.on('change', restrictHandler);
63
+ };
64
+ $.fn.characterCounter = function () {
65
+ let targets = $(this);
66
+ let characterCounterHandler = function () {
67
+ let counter = $(this).data('counter');
68
+ let max = Number($(this).attr('maxlength'));
69
+ let len = $(this).val().length;
70
+ $(counter).text(max - len);
71
+ let cls = "text-success";
72
+ if (max - len < max / 10)
73
+ cls = "text-danger";
74
+ $(counter).parent().removeClass('text-success').removeClass('text-danger').addClass(cls);
75
+ };
76
+ targets.on('keyup', characterCounterHandler);
77
+ targets.on('paste', characterCounterHandler);
78
+ targets.on('change', characterCounterHandler);
79
+ };
80
+ $.fn.warningAlert = function () {
81
+ let targets = $(this);
82
+ let warningAlertHandler = function (e) {
83
+ e.preventDefault();
84
+ let warningAlertCallback = function (result) {
85
+ if (result.isConfirmed) {
86
+ let url = $(e.currentTarget).attr('href');
87
+ window.location.href = url;
88
+ }
89
+ };
90
+ Alerts.confirm({
91
+ title: $(e.currentTarget).data('title'),
92
+ html: $(e.currentTarget).data('warning'),
93
+ footer: $(e.currentTarget).data('footer'),
94
+ icon: 'warning'
95
+ }, warningAlertCallback);
96
+ return false;
97
+ };
98
+ targets.on('click', warningAlertHandler);
99
+ };
@@ -0,0 +1,8 @@
1
+ declare global {
2
+ interface Number {
3
+ formatCurrency(currency: string): string;
4
+ formatKilobytes(): string;
5
+ formatMegabytes(): string;
6
+ }
7
+ }
8
+ export {};
@@ -0,0 +1,19 @@
1
+ Number.prototype.formatCurrency = function (currency) {
2
+ return currency + " " + this.toFixed(2).replace(/./g, function (c, i, a) {
3
+ return i > 0 && c !== "." && (a.length - i) % 3 === 0 ? "," + c : c;
4
+ });
5
+ };
6
+ Number.prototype.formatKilobytes = function () {
7
+ let n = this / 1024;
8
+ return n.toFixed(0).replace(/./g, function (c, i, a) {
9
+ return i > 0 && c !== "." && (a.length - i) % 3 === 0 ? "," + c : c;
10
+ }) + "Kb";
11
+ };
12
+ Number.prototype.formatMegabytes = function () {
13
+ let n = this / 1024;
14
+ n = n / 1024;
15
+ return n.toFixed(0).replace(/./g, function (c, i, a) {
16
+ return i > 0 && c !== "." && (a.length - i) % 3 === 0 ? "," + c : c;
17
+ }) + "Mb";
18
+ };
19
+ export {};
@@ -0,0 +1,12 @@
1
+ declare global {
2
+ interface String {
3
+ isUrlExternal(): boolean;
4
+ htmlEncode(): string;
5
+ htmlDecode(): string;
6
+ contains(it: string): boolean;
7
+ pick(min: number, max: number): string;
8
+ shuffle(): string;
9
+ toSeoUrl(): string;
10
+ }
11
+ }
12
+ export {};
@@ -0,0 +1,49 @@
1
+ String.prototype.htmlEncode = function () {
2
+ //create a in-memory div, set it's inner text(which jQuery automatically encodes)
3
+ //then grab the encoded contents back out. The div never exists on the page.
4
+ return $('<div/>').text(this).html();
5
+ };
6
+ String.prototype.htmlDecode = function () {
7
+ return $('<div/>').html(this).text();
8
+ };
9
+ String.prototype.contains = function (it) {
10
+ return this.indexOf(it) !== -1;
11
+ };
12
+ String.prototype.pick = function (min, max) {
13
+ var n, chars = '';
14
+ if (typeof max === 'undefined') {
15
+ n = min;
16
+ }
17
+ else {
18
+ n = min + Math.floor(Math.random() * (max - min));
19
+ }
20
+ for (var i = 0; i < n; i++) {
21
+ chars += this.charAt(Math.floor(Math.random() * this.length));
22
+ }
23
+ return chars;
24
+ };
25
+ // Credit to @Christoph: http://stackoverflow.com/a/962890/464744
26
+ String.prototype.shuffle = function () {
27
+ var array = this.split('');
28
+ var tmp, current, top = array.length;
29
+ if (top)
30
+ while (--top) {
31
+ current = Math.floor(Math.random() * (top + 1));
32
+ tmp = array[current];
33
+ array[current] = array[top];
34
+ array[top] = tmp;
35
+ }
36
+ return array.join('');
37
+ };
38
+ String.prototype.toSeoUrl = function () {
39
+ var output = this.replace(/[^a-zA-Z0-9]/g, ' ').replace(/\s+/g, "-").toLowerCase();
40
+ /* remove first dash */
41
+ if (output.charAt(0) === '-')
42
+ output = output.substring(1);
43
+ /* remove last dash */
44
+ var last = output.length - 1;
45
+ if (output.charAt(last) === '-')
46
+ output = output.substring(0, last);
47
+ return output;
48
+ };
49
+ export {};
@@ -0,0 +1,23 @@
1
+ export * from './interfaces/KeyValue';
2
+ export * from './models/Content';
3
+ export * from './models/Property';
4
+ export * from './models/Users';
5
+ export * from './core/Alerts';
6
+ export * from './core/BaseSite';
7
+ export * from './core/ColorPicker';
8
+ export * from './core/DataList';
9
+ export * from './core/Editors';
10
+ export * from './core/Handlers';
11
+ export * from './core/Helpers';
12
+ export * from './core/HoodApi';
13
+ export * from './core/Inline';
14
+ export * from './core/Loader';
15
+ export * from './core/Media';
16
+ export * from './core/Modal';
17
+ export * from './core/RandomStringGenerator';
18
+ export * from './core/Response';
19
+ export * from './core/Uploader';
20
+ export * from './core/Validator';
21
+ export * from './extensions/jqueryExtensions';
22
+ export * from './extensions/numberExtensions';
23
+ export * from './extensions/stringExtensions';
@@ -0,0 +1,23 @@
1
+ export * from './interfaces/KeyValue';
2
+ export * from './models/Content';
3
+ export * from './models/Property';
4
+ export * from './models/Users';
5
+ export * from './core/Alerts';
6
+ export * from './core/BaseSite';
7
+ export * from './core/ColorPicker';
8
+ export * from './core/DataList';
9
+ export * from './core/Editors';
10
+ export * from './core/Handlers';
11
+ export * from './core/Helpers';
12
+ export * from './core/HoodApi';
13
+ export * from './core/Inline';
14
+ export * from './core/Loader';
15
+ export * from './core/Media';
16
+ export * from './core/Modal';
17
+ export * from './core/RandomStringGenerator';
18
+ export * from './core/Response';
19
+ export * from './core/Uploader';
20
+ export * from './core/Validator';
21
+ export * from './extensions/jqueryExtensions';
22
+ export * from './extensions/numberExtensions';
23
+ export * from './extensions/stringExtensions';
@@ -0,0 +1,4 @@
1
+ export declare interface KeyValue<K, V> {
2
+ key: K;
3
+ value: V;
4
+ }
@@ -0,0 +1 @@
1
+ export {};
package/dist/js/login.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * hoodcms v5.0.7
2
+ * hoodcms v5.0.11
3
3
  * A fully customisable content management system built in ASP.NET Core 5 & Bootstrap 5.
4
4
  * Written by George Whysall, 2021
5
5
  * Released under the GPL-3.0 License.
@@ -0,0 +1,50 @@
1
+ import { KeyValue } from "../interfaces/KeyValue";
2
+ export declare interface ContentStatistics {
3
+ totalPosts: number;
4
+ totalPublished: number;
5
+ days: KeyValue<string, number>[];
6
+ months: KeyValue<string, number>[];
7
+ publishDays: KeyValue<string, number>[];
8
+ publishMonths: KeyValue<string, number>[];
9
+ byType: ContentTypeStatistic[];
10
+ }
11
+ export declare interface ContentTypeStatistic {
12
+ type: ContentType;
13
+ total: number;
14
+ name: string;
15
+ }
16
+ export declare interface ContentType {
17
+ baseName: string;
18
+ cachedByType: boolean;
19
+ customFields: any;
20
+ customFieldsJson: string;
21
+ description: string;
22
+ enabled: boolean;
23
+ excerptName: string;
24
+ gallery: boolean;
25
+ hasPage: boolean;
26
+ hideAuthor: boolean;
27
+ icon: string;
28
+ isPublic: boolean;
29
+ isUnknown: boolean;
30
+ metaTitle: string;
31
+ multiLineExcerpt: boolean;
32
+ noImage: string;
33
+ richTextExcerpt: boolean;
34
+ search: string;
35
+ showBanner: boolean;
36
+ showCategories: boolean;
37
+ showDesigner: boolean;
38
+ showEditor: boolean;
39
+ showImage: boolean;
40
+ showPreview: boolean;
41
+ slug: string;
42
+ templateFolder: string;
43
+ templates: boolean;
44
+ title: string;
45
+ titleName: string;
46
+ type: string;
47
+ typeName: string;
48
+ typeNamePlural: string;
49
+ urlFormatting: string;
50
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ import { KeyValue } from "../interfaces/KeyValue";
2
+ export declare class PropertyStatistics {
3
+ totalProperties: number;
4
+ totalPublished: number;
5
+ days: KeyValue<string, number>[];
6
+ months: KeyValue<string, number>[];
7
+ publishDays: KeyValue<string, number>[];
8
+ publishMonths: KeyValue<string, number>[];
9
+ }
@@ -0,0 +1,2 @@
1
+ export class PropertyStatistics {
2
+ }
@@ -0,0 +1,7 @@
1
+ import { KeyValue } from "../interfaces/KeyValue";
2
+ export declare class UserStatistics {
3
+ totalUsers: number;
4
+ totalAdmins: string;
5
+ days: KeyValue<string, number>[];
6
+ months: KeyValue<string, number>[];
7
+ }
@@ -0,0 +1,2 @@
1
+ export class UserStatistics {
2
+ }
package/package.json CHANGED
@@ -1,7 +1,50 @@
1
1
  {
2
2
  "name": "hoodcms",
3
- "version": "5.0.7",
3
+ "version": "5.0.11",
4
4
  "description": "A fully customisable content management system built in ASP.NET Core 5 & Bootstrap 5.",
5
+ "keywords": [
6
+ "hood",
7
+ "hoodcms",
8
+ "visual-studio",
9
+ "netcore",
10
+ "net5.0",
11
+ "efcore",
12
+ "ef",
13
+ "dotnet",
14
+ "js",
15
+ "ts",
16
+ "scss"
17
+ ],
18
+ "homepage": "https://github.com/HoodDigital/Hood#readme",
19
+ "bugs": {
20
+ "url": "https://github.com/HoodDigital/Hood/issues"
21
+ },
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/HoodDigital/hoodcms.git"
25
+ },
26
+ "license": "GPL-3.0",
27
+ "author": "George Whysall",
28
+ "main": "./dist/js/index.js",
29
+ "types": "./dist/js/index.d.ts",
30
+ "scripts": {
31
+ "build": "npm-run-all scss tsc",
32
+ "build-production": "npm-run-all scss cssnano tsc tsc-production",
33
+ "clean": "gulp clean",
34
+ "copy": "gulp copy",
35
+ "cssnano": "gulp cssnano",
36
+ "package": "npm-run-all clean build-production copy views",
37
+ "scss": "gulp scss",
38
+ "scss-lint": "stylelint src/scss/ --fix",
39
+ "tsc": "tsc && npm-run-all tsc-rollup",
40
+ "tsc-production": "tsc --project tsconfig.production.json && npm-run-all tsc-rollup-production",
41
+ "tsc-recaptcha": "tsc --project tsconfig.recaptcha.json",
42
+ "tsc-rollup": "rollup --config --debug",
43
+ "tsc-rollup-production": "rollup --config",
44
+ "views": "gulp views",
45
+ "watch-scss": "npm-watch scss",
46
+ "watch-tsc": "npm-watch tsc"
47
+ },
5
48
  "dependencies": {
6
49
  "@popperjs/core": "^2.9.2",
7
50
  "@simonwep/pickr": "^1.8.0",
@@ -23,12 +66,12 @@
23
66
  "tinymce": "^5.8.0"
24
67
  },
25
68
  "devDependencies": {
26
- "@lopatnov/rollup-plugin-uglify": "^2.1.1",
69
+ "@lopatnov/rollup-plugin-uglify": "^2.1.2",
27
70
  "@rollup/plugin-commonjs": "^21.0.1",
28
- "@rollup/plugin-node-resolve": "^13.0.0",
29
- "@rollup/plugin-typescript": "^8.2.1",
30
- "cssnano": "^5.0.7",
31
- "eslint": "^7.29.0",
71
+ "@rollup/plugin-node-resolve": "^13.0.6",
72
+ "@rollup/plugin-typescript": "^8.3.0",
73
+ "cssnano": "^5.0.11",
74
+ "eslint": "^8.3.0",
32
75
  "gulp": "^4.0.2",
33
76
  "gulp-autoprefixer": "^8.0.0",
34
77
  "gulp-concat": "^2.6.1",
@@ -39,33 +82,16 @@
39
82
  "gulp-rename": "^2.0.0",
40
83
  "gulp-rimraf": "^1.0.0",
41
84
  "gulp-sourcemaps": "^3.0.0",
85
+ "node-sass-tilde-importer": "^1.0.2",
42
86
  "npm-run-all": "^4.1.5",
43
- "npm-watch": "^0.10.0",
44
- "postcss": "^8.2.15",
45
- "rollup": "^2.51.2",
87
+ "npm-watch": "^0.11.0",
88
+ "postcss": "^8.4.4",
89
+ "rollup": "^2.60.1",
46
90
  "rollup-pluginutils": "^2.8.2",
47
- "sass": "^1.35.1",
48
- "stylelint": "^13.13.1",
49
- "terser": "^5.7.0",
50
- "typescript": "^4.3.4"
51
- },
52
- "scripts": {
53
- "build": "npm-run-all scss tsc",
54
- "build-production": "npm-run-all scss cssnano tsc tsc-production",
55
- "clean": "gulp clean",
56
- "copy": "gulp copy",
57
- "cssnano": "gulp cssnano",
58
- "package": "npm-run-all clean build-production copy views",
59
- "scss": "gulp scss",
60
- "scss-lint": "stylelint src/scss/ --fix",
61
- "tsc": "tsc && npm-run-all tsc-rollup",
62
- "tsc-recaptcha": "tsc --project tsconfig.recaptcha.json",
63
- "tsc-production": "tsc --project tsconfig.production.json && npm-run-all tsc-rollup-production",
64
- "tsc-rollup": "rollup --config --debug",
65
- "tsc-rollup-production": "rollup --config",
66
- "views": "gulp views",
67
- "watch-scss": "npm-watch scss",
68
- "watch-tsc": "npm-watch tsc"
91
+ "sass": "^1.43.5",
92
+ "stylelint": "^14.1.0",
93
+ "terser": "^5.10.0",
94
+ "typescript": "^4.5.2"
69
95
  },
70
96
  "watch": {
71
97
  "scss": {
@@ -82,28 +108,5 @@
82
108
  "extensions": "ts",
83
109
  "quiet": false
84
110
  }
85
- },
86
- "repository": {
87
- "type": "git",
88
- "url": "git+https://github.com/HoodDigital/hoodcms.git"
89
- },
90
- "keywords": [
91
- "hood",
92
- "hoodcms",
93
- "visual-studio",
94
- "netcore",
95
- "net5.0",
96
- "efcore",
97
- "ef",
98
- "dotnet",
99
- "js",
100
- "ts",
101
- "scss"
102
- ],
103
- "author": "George Whysall",
104
- "license": "GPL-3.0",
105
- "bugs": {
106
- "url": "https://github.com/HoodDigital/Hood/issues"
107
- },
108
- "homepage": "https://github.com/HoodDigital/Hood#readme"
111
+ }
109
112
  }