Skip to content

Commit def2da7

Browse files
author
Steve Thompson
committed
Bundling problems using webpack in the angular compiler
had led me to refactor the loading of dependency classes. Trying a new method: calling functions defined in an external file "dependencyClassLoader" which call the require() function and return the class.
1 parent 0cbe27d commit def2da7

File tree

4 files changed

+121
-33
lines changed

4 files changed

+121
-33
lines changed

dist/index.js

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ var array_append_prepend_1 = require("@writetome51/array-append-prepend");
1717
var array_move_by_index_1 = require("@writetome51/array-move-by-index");
1818
var set_array_1 = require("@writetome51/set-array");
1919
var public_array_content_1 = require("@writetome51/public-array-content");
20+
var dependencyClassLoader = require("./privy/dependencyClassLoader");
2021
/***********************
2122
This class is for general array manipulation. It's called PublicArray because it
2223
contains an array in a public property: 'data' .
@@ -31,29 +32,16 @@ var PublicArray = /** @class */ (function (_super) {
3132
) {
3233
if (data === void 0) { data = []; }
3334
var _this = _super.call(this, data) || this;
34-
// These are not loaded at the top with import statements because we're loading them
35-
// lazily in the getter functions to boost performance.
36-
var dependencyClasses = [
37-
{ path: '@writetome51/public-array-filter', name: 'PublicArrayFilter' },
38-
{ path: '@writetome51/public-array-getter-converter', name: 'PublicArrayGetterConverter' },
39-
{ path: '@writetome51/public-array-getter', name: 'PublicArrayGetter' },
40-
{ path: '@writetome51/public-array-getter-remover', name: 'PublicArrayGetterRemover' },
41-
{ path: '@writetome51/public-array-inserter', name: 'PublicArrayInserter' },
42-
{ path: '@writetome51/public-array-remover', name: 'PublicArrayRemover' },
43-
{ path: '@writetome51/public-array-replacer', name: 'PublicArrayReplacer' },
44-
{ path: '@writetome51/public-array-sorter', name: 'PublicArraySorter' }
45-
];
4635
_this._createGetterAndOrSetterForEach(
4736
// each of these is a public property:
4837
['filter', 'getConverted', 'get', 'getAndRemove', 'insert', 'remove', 'replace', 'sort'], {
4938
get_getterFunction: function (property, index) {
5039
return function () {
5140
// Lazy-Loading is used to instantiate each property:
5241
if (!(_this["_" + property])) { // if property not set...
53-
var dependencyClass = dependencyClasses[index];
54-
// @ts-ignore
55-
var modul = require(dependencyClass.path);
56-
_this["_" + property] = new modul[dependencyClass.name]();
42+
var className = dependencyClassLoader.__dependencyClasses[index];
43+
var dependencyClass = dependencyClassLoader["__get" + className]();
44+
_this["_" + property] = new dependencyClass();
5745
}
5846
_this["_" + property].data = _this.data;
5947
return _this["_" + property];
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
"use strict";
2+
// We're loading these lazily inside PublicArray's getter functions to boost performance.
3+
Object.defineProperty(exports, "__esModule", { value: true });
4+
exports.__dependencyClasses = [
5+
'PublicArrayFilter',
6+
'PublicArrayGetterConverter',
7+
'PublicArrayGetter',
8+
'PublicArrayGetterRemover',
9+
'PublicArrayInserter',
10+
'PublicArrayRemover',
11+
'PublicArrayReplacer',
12+
'PublicArraySorter'
13+
];
14+
function __getPublicArrayFilter() {
15+
// @ts-ignore
16+
return require('@writetome51/public-array-filter').PublicArrayFilter;
17+
}
18+
exports.__getPublicArrayFilter = __getPublicArrayFilter;
19+
function __getPublicArrayGetterConverter() {
20+
// @ts-ignore
21+
return require('@writetome51/public-array-getter-converter').PublicArrayGetterConverter;
22+
}
23+
exports.__getPublicArrayGetterConverter = __getPublicArrayGetterConverter;
24+
function __getPublicArrayGetter() {
25+
// @ts-ignore
26+
return require('@writetome51/public-array-getter').PublicArrayGetter;
27+
}
28+
exports.__getPublicArrayGetter = __getPublicArrayGetter;
29+
function __getPublicArrayGetterRemover() {
30+
// @ts-ignore
31+
return require('@writetome51/public-array-getter-remover').PublicArrayGetterRemover;
32+
}
33+
exports.__getPublicArrayGetterRemover = __getPublicArrayGetterRemover;
34+
function __getPublicArrayInserter() {
35+
// @ts-ignore
36+
return require('@writetome51/public-array-inserter').PublicArrayInserter;
37+
}
38+
exports.__getPublicArrayInserter = __getPublicArrayInserter;
39+
function __getPublicArrayRemover() {
40+
// @ts-ignore
41+
return require('@writetome51/public-array-remover').PublicArrayRemover;
42+
}
43+
exports.__getPublicArrayRemover = __getPublicArrayRemover;
44+
function __getPublicArrayReplacer() {
45+
// @ts-ignore
46+
return require('@writetome51/public-array-replacer').PublicArrayReplacer;
47+
}
48+
exports.__getPublicArrayReplacer = __getPublicArrayReplacer;
49+
function __getPublicArraySorter() {
50+
// @ts-ignore
51+
return require('@writetome51/public-array-sorter').PublicArraySorter;
52+
}
53+
exports.__getPublicArraySorter = __getPublicArraySorter;

lib/index.ts

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { append, prepend } from '@writetome51/array-append-prepend';
22
import { moveByIndex } from '@writetome51/array-move-by-index';
33
import { setArray } from '@writetome51/set-array';
44
import { PublicArrayContent } from '@writetome51/public-array-content';
5+
import * as dependencyClassLoader from './privy/dependencyClassLoader';
56

67

78
/***********************
@@ -47,19 +48,6 @@ export class PublicArray extends PublicArrayContent {
4748

4849
super(data);
4950

50-
// These are not loaded at the top with import statements because we're loading them
51-
// lazily in the getter functions to boost performance.
52-
let dependencyClasses = [
53-
{path: '@writetome51/public-array-filter', name: 'PublicArrayFilter'},
54-
{path: '@writetome51/public-array-getter-converter', name: 'PublicArrayGetterConverter'},
55-
{path: '@writetome51/public-array-getter', name: 'PublicArrayGetter'},
56-
{path: '@writetome51/public-array-getter-remover', name: 'PublicArrayGetterRemover'},
57-
{path: '@writetome51/public-array-inserter', name: 'PublicArrayInserter'},
58-
{path: '@writetome51/public-array-remover', name: 'PublicArrayRemover'},
59-
{path: '@writetome51/public-array-replacer', name: 'PublicArrayReplacer'},
60-
{path: '@writetome51/public-array-sorter', name: 'PublicArraySorter'}
61-
];
62-
6351
this._createGetterAndOrSetterForEach(
6452
// each of these is a public property:
6553
['filter', 'getConverted', 'get', 'getAndRemove', 'insert', 'remove', 'replace', 'sort'],
@@ -70,10 +58,9 @@ export class PublicArray extends PublicArrayContent {
7058

7159
// Lazy-Loading is used to instantiate each property:
7260
if (!(this[`_${property}`])) { // if property not set...
73-
let dependencyClass = dependencyClasses[index];
74-
// @ts-ignore
75-
let modul = require(dependencyClass.path);
76-
this[`_${property}`] = new modul[dependencyClass.name]();
61+
let className = dependencyClassLoader.__dependencyClasses[index];
62+
let dependencyClass = dependencyClassLoader[`__get${className}`]();
63+
this[`_${property}`] = new dependencyClass();
7764
}
7865
this[`_${property}`].data = this.data;
7966
return this[`_${property}`];

lib/privy/dependencyClassLoader.ts

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
// We're loading these lazily inside PublicArray's getter functions to boost performance.
2+
3+
export let __dependencyClasses = [
4+
'PublicArrayFilter',
5+
'PublicArrayGetterConverter',
6+
'PublicArrayGetter',
7+
'PublicArrayGetterRemover',
8+
'PublicArrayInserter',
9+
'PublicArrayRemover',
10+
'PublicArrayReplacer',
11+
'PublicArraySorter'
12+
];
13+
14+
15+
export function __getPublicArrayFilter() {
16+
// @ts-ignore
17+
return require('@writetome51/public-array-filter').PublicArrayFilter;
18+
}
19+
20+
21+
export function __getPublicArrayGetterConverter() {
22+
// @ts-ignore
23+
return require('@writetome51/public-array-getter-converter').PublicArrayGetterConverter;
24+
}
25+
26+
27+
export function __getPublicArrayGetter() {
28+
// @ts-ignore
29+
return require('@writetome51/public-array-getter').PublicArrayGetter;
30+
}
31+
32+
33+
export function __getPublicArrayGetterRemover() {
34+
// @ts-ignore
35+
return require('@writetome51/public-array-getter-remover').PublicArrayGetterRemover;
36+
}
37+
38+
39+
export function __getPublicArrayInserter() {
40+
// @ts-ignore
41+
return require('@writetome51/public-array-inserter').PublicArrayInserter;
42+
}
43+
44+
45+
export function __getPublicArrayRemover() {
46+
// @ts-ignore
47+
return require('@writetome51/public-array-remover').PublicArrayRemover;
48+
}
49+
50+
51+
export function __getPublicArrayReplacer() {
52+
// @ts-ignore
53+
return require('@writetome51/public-array-replacer').PublicArrayReplacer;
54+
}
55+
56+
57+
export function __getPublicArraySorter() {
58+
// @ts-ignore
59+
return require('@writetome51/public-array-sorter').PublicArraySorter;
60+
}

0 commit comments

Comments
 (0)