This commit is contained in:
2022-07-21 03:28:35 +00:00
parent d7c883d6df
commit 51b34b0e1d
30103 changed files with 4152204 additions and 23 deletions
+3
View File
@@ -0,0 +1,3 @@
import loader from './loader';
export * from './types';
export default loader;
+7
View File
@@ -0,0 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const loader_1 = (0, tslib_1.__importDefault)(require("./loader"));
(0, tslib_1.__exportStar)(require("./types"), exports);
exports.default = loader_1.default;
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mEAA8B;AAE9B,uDAAwB;AAExB,kBAAe,gBAAM,CAAC"}
+3
View File
@@ -0,0 +1,3 @@
import type { Loader } from '.';
declare const loader: Loader;
export default loader;
+16
View File
@@ -0,0 +1,16 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("./utils");
const loader = function (source) {
this.cacheable();
const callback = this.async();
if (!(0, utils_1.isFunction)(callback)) {
throw new Error(utils_1.errorMessage.syncCompilation);
}
if (typeof source !== 'string') {
throw new Error(utils_1.errorMessage.impossible);
}
void (0, utils_1.loadResources)(this, source, callback);
};
exports.default = loader;
//# sourceMappingURL=loader.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":";;AAAA,mCAAgE;AAIhE,MAAM,MAAM,GAAW,UAAU,MAAM;IACnC,IAAI,CAAC,SAAS,EAAE,CAAC;IAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAE9B,IAAI,CAAC,IAAA,kBAAU,EAAiB,QAAQ,CAAC,EAAE;QACvC,MAAM,IAAI,KAAK,CAAC,oBAAY,CAAC,eAAe,CAAC,CAAC;KACjD;IAGD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,oBAAY,CAAC,UAAU,CAAC,CAAC;KAC5C;IAED,KAAK,IAAA,qBAAa,EAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,kBAAe,MAAM,CAAC"}
+4
View File
@@ -0,0 +1,4 @@
import type validate from 'schema-utils';
declare type Schema = Parameters<typeof validate>[0];
export declare const schema: Schema;
export {};
+40
View File
@@ -0,0 +1,40 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.schema = void 0;
exports.schema = {
type: 'object',
properties: {
patterns: {
anyOf: [
{ type: 'string' },
{
type: 'array',
uniqueItems: true,
items: {
type: 'string',
},
},
],
},
injector: {
anyOf: [
{
type: 'string',
enum: ['prepend', 'append'],
},
{
instanceof: 'Function',
},
],
},
globOptions: {
type: 'object',
},
resolveUrl: {
type: 'boolean',
},
},
required: ['patterns'],
additionalProperties: false,
};
//# sourceMappingURL=schema.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":";;;AAIa,QAAA,MAAM,GAAW;IAC1B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,QAAQ,EAAE;YACN,KAAK,EAAE;gBACH,EAAC,IAAI,EAAE,QAAQ,EAAC;gBAChB;oBACI,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,IAAI;oBACjB,KAAK,EAAE;wBACH,IAAI,EAAE,QAAQ;qBACjB;iBACJ;aACJ;SACJ;QACD,QAAQ,EAAE;YACN,KAAK,EAAE;gBACH;oBACI,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;iBAC9B;gBACD;oBACI,UAAU,EAAE,UAAU;iBACzB;aACJ;SACJ;QACD,WAAW,EAAE;YACT,IAAI,EAAE,QAAQ;SACjB;QACD,UAAU,EAAE;YACR,IAAI,EAAE,SAAS;SAClB;KACJ;IACD,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,oBAAoB,EAAE,KAAK;CAC9B,CAAC"}
+24
View File
@@ -0,0 +1,24 @@
import type { loader } from 'webpack';
import type glob from 'glob';
export declare type Loader = loader.Loader;
export declare type LoaderContext = loader.LoaderContext;
export declare type LoaderCallback = loader.loaderCallback;
export declare type StyleResourcesFileFormat = 'css' | 'sass' | 'scss' | 'less' | 'styl';
export interface StyleResource {
file: string;
content: string;
}
export declare type StyleResources = StyleResource[];
export declare type StyleResourcesFunctionalInjector = (this: LoaderContext, source: string, resources: StyleResources) => string | Promise<string>;
export declare type StyleResourcesInjector = 'prepend' | 'append' | StyleResourcesFunctionalInjector;
export declare type StyleResourcesNormalizedInjector = StyleResourcesFunctionalInjector;
export interface StyleResourcesLoaderOptions {
patterns: string | string[];
injector?: StyleResourcesInjector;
globOptions?: glob.IOptions;
resolveUrl?: boolean;
}
export interface StyleResourcesLoaderNormalizedOptions extends NonNullable<StyleResourcesLoaderOptions> {
patterns: string[];
injector: StyleResourcesNormalizedInjector;
}
+3
View File
@@ -0,0 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=types.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
+7
View File
@@ -0,0 +1,7 @@
import type { StyleResourcesFileFormat } from '../types';
export declare const PACKAGE_NAME = "style-resources-loader";
export declare const ISSUES_URL: string;
export declare const LOADER_NAME: string;
export declare const VALIDATION_BASE_DATA_PATH = "options";
export declare const SUPPORTED_FILE_FORMATS: StyleResourcesFileFormat[];
export declare const SUPPORTED_FILE_EXTS: string[];
+12
View File
@@ -0,0 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SUPPORTED_FILE_EXTS = exports.SUPPORTED_FILE_FORMATS = exports.VALIDATION_BASE_DATA_PATH = exports.LOADER_NAME = exports.ISSUES_URL = exports.PACKAGE_NAME = void 0;
exports.PACKAGE_NAME = 'style-resources-loader';
exports.ISSUES_URL = `https://github.com/yenshih/${exports.PACKAGE_NAME}/issues`;
exports.LOADER_NAME = exports.PACKAGE_NAME.split('-')
.map(word => `${word[0].toUpperCase()}${word.slice(1)}`)
.join(' ');
exports.VALIDATION_BASE_DATA_PATH = 'options';
exports.SUPPORTED_FILE_FORMATS = ['css', 'sass', 'scss', 'less', 'styl'];
exports.SUPPORTED_FILE_EXTS = exports.SUPPORTED_FILE_FORMATS.map(type => `.${type}`);
//# sourceMappingURL=constants.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,YAAY,GAAG,wBAAwB,CAAC;AAExC,QAAA,UAAU,GAAG,8BAA8B,oBAAY,SAAS,CAAC;AAEjE,QAAA,WAAW,GAAG,oBAAY,CAAC,KAAK,CAAC,GAAG,CAAC;KAC7C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,IAAI,CAAC,GAAG,CAAC,CAAC;AAEF,QAAA,yBAAyB,GAAG,SAAS,CAAC;AAEtC,QAAA,sBAAsB,GAA+B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE7F,QAAA,mBAAmB,GAAG,8BAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC"}
+5
View File
@@ -0,0 +1,5 @@
export declare const errorMessage: {
impossible: string;
syncCompilation: string;
invalidInjectorReturn: string;
};
+15
View File
@@ -0,0 +1,15 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.errorMessage = void 0;
const constants_1 = require("./constants");
const formatErrorMessage = (message) => `[${constants_1.PACKAGE_NAME}] ${message}`;
const messageByType = {
impossible: `This error is caused by a bug. Please file an issue: ${constants_1.ISSUES_URL}.`,
syncCompilation: 'Synchronous compilation is not supported.',
invalidInjectorReturn: 'Expected options.injector(...) returns a string. Instead received number.',
};
exports.errorMessage = Object.entries(messageByType).reduce((errorMessage, [type, message]) => ({
...errorMessage,
[type]: formatErrorMessage(message),
}), messageByType);
//# sourceMappingURL=error-message.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"error-message.js","sourceRoot":"","sources":["../../src/utils/error-message.ts"],"names":[],"mappings":";;;AAAA,2CAAqD;AAErD,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,IAAI,wBAAY,KAAK,OAAO,EAAE,CAAC;AAE/E,MAAM,aAAa,GAAG;IAClB,UAAU,EAAE,wDAAwD,sBAAU,GAAG;IACjF,eAAe,EAAE,2CAA2C;IAC5D,qBAAqB,EAAE,2EAA2E;CACrG,CAAC;AAEW,QAAA,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,CAC5D,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAChC,GAAG,YAAY;IACf,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC;CACtC,CAAC,EACF,aAAa,CAChB,CAAC"}
+2
View File
@@ -0,0 +1,2 @@
import type { LoaderContext, StyleResource, StyleResourcesLoaderNormalizedOptions } from '../types';
export declare const getResources: (ctx: LoaderContext, options: StyleResourcesLoaderNormalizedOptions) => Promise<StyleResource[]>;
+21
View File
@@ -0,0 +1,21 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getResources = void 0;
const tslib_1 = require("tslib");
const fs_1 = (0, tslib_1.__importDefault)(require("fs"));
const util_1 = (0, tslib_1.__importDefault)(require("util"));
const match_files_1 = require("./match-files");
const resolve_import_url_1 = require("./resolve-import-url");
const getResources = async (ctx, options) => {
const { resolveUrl } = options;
const files = await (0, match_files_1.matchFiles)(ctx, options);
files.forEach(file => ctx.dependency(file));
const resources = await Promise.all(files.map(async (file) => {
const content = await util_1.default.promisify(fs_1.default.readFile)(file, 'utf8');
const resource = { file, content };
return resolveUrl ? (0, resolve_import_url_1.resolveImportUrl)(ctx, resource) : resource;
}));
return resources;
};
exports.getResources = getResources;
//# sourceMappingURL=get-resources.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"get-resources.js","sourceRoot":"","sources":["../../src/utils/get-resources.ts"],"names":[],"mappings":";;;;AAAA,yDAAoB;AACpB,6DAAwB;AAIxB,+CAAyC;AACzC,6DAAsD;AAE/C,MAAM,YAAY,GAAG,KAAK,EAAE,GAAkB,EAAE,OAA8C,EAAE,EAAE;IACrG,MAAM,EAAC,UAAU,EAAC,GAAG,OAAO,CAAC;IAE7B,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAU,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAE7C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;QACnB,MAAM,OAAO,GAAG,MAAM,cAAI,CAAC,SAAS,CAAC,YAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAkB,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;QAEhD,OAAO,UAAU,CAAC,CAAC,CAAC,IAAA,qCAAgB,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACnE,CAAC,CAAC,CACL,CAAC;IAEF,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAjBW,QAAA,YAAY,gBAiBvB"}
+10
View File
@@ -0,0 +1,10 @@
export * from './constants';
export * from './error-message';
export * from './get-resources';
export * from './inject-resources';
export * from './load-resources';
export * from './match-files';
export * from './normalize-options';
export * from './resolve-import-url';
export * from './type-guards';
export * from './validate-options';
+14
View File
@@ -0,0 +1,14 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
(0, tslib_1.__exportStar)(require("./constants"), exports);
(0, tslib_1.__exportStar)(require("./error-message"), exports);
(0, tslib_1.__exportStar)(require("./get-resources"), exports);
(0, tslib_1.__exportStar)(require("./inject-resources"), exports);
(0, tslib_1.__exportStar)(require("./load-resources"), exports);
(0, tslib_1.__exportStar)(require("./match-files"), exports);
(0, tslib_1.__exportStar)(require("./normalize-options"), exports);
(0, tslib_1.__exportStar)(require("./resolve-import-url"), exports);
(0, tslib_1.__exportStar)(require("./type-guards"), exports);
(0, tslib_1.__exportStar)(require("./validate-options"), exports);
//# sourceMappingURL=index.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,2DAA4B;AAC5B,+DAAgC;AAChC,+DAAgC;AAChC,kEAAmC;AACnC,gEAAiC;AACjC,6DAA8B;AAC9B,mEAAoC;AACpC,oEAAqC;AACrC,6DAA8B;AAC9B,kEAAmC"}
+3
View File
@@ -0,0 +1,3 @@
import type { LoaderContext } from '../types';
import type { StyleResources, StyleResourcesLoaderNormalizedOptions } from '..';
export declare const injectResources: (ctx: LoaderContext, options: StyleResourcesLoaderNormalizedOptions, source: string, resources: StyleResources) => Promise<string>;
+15
View File
@@ -0,0 +1,15 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.injectResources = void 0;
const error_message_1 = require("./error-message");
const injectResources = async (ctx, options, source, resources) => {
const { injector } = options;
const dist = injector.call(ctx, source, resources);
const content = await dist;
if (typeof content !== 'string') {
throw new Error(error_message_1.errorMessage.invalidInjectorReturn);
}
return content;
};
exports.injectResources = injectResources;
//# sourceMappingURL=inject-resources.js.map
@@ -0,0 +1 @@
{"version":3,"file":"inject-resources.js","sourceRoot":"","sources":["../../src/utils/inject-resources.ts"],"names":[],"mappings":";;;AAGA,mDAA6C;AAEtC,MAAM,eAAe,GAAG,KAAK,EAChC,GAAkB,EAClB,OAA8C,EAC9C,MAAc,EACd,SAAyB,EAC3B,EAAE;IACA,MAAM,EAAC,QAAQ,EAAC,GAAG,OAAO,CAAC;IAE3B,MAAM,IAAI,GAAY,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAE5D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC;IAE3B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC7B,MAAM,IAAI,KAAK,CAAC,4BAAY,CAAC,qBAAqB,CAAC,CAAC;KACvD;IAED,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAjBW,QAAA,eAAe,mBAiB1B"}
+2
View File
@@ -0,0 +1,2 @@
import type { LoaderContext, LoaderCallback } from '../types';
export declare const loadResources: (ctx: LoaderContext, source: string, callback: LoaderCallback) => Promise<void>;
+19
View File
@@ -0,0 +1,19 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadResources = void 0;
const get_resources_1 = require("./get-resources");
const inject_resources_1 = require("./inject-resources");
const normalize_options_1 = require("./normalize-options");
const loadResources = async (ctx, source, callback) => {
try {
const options = (0, normalize_options_1.normalizeOptions)(ctx);
const resources = await (0, get_resources_1.getResources)(ctx, options);
const content = await (0, inject_resources_1.injectResources)(ctx, options, source, resources);
callback(null, content);
}
catch (err) {
callback(err);
}
};
exports.loadResources = loadResources;
//# sourceMappingURL=load-resources.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"load-resources.js","sourceRoot":"","sources":["../../src/utils/load-resources.ts"],"names":[],"mappings":";;;AAEA,mDAA6C;AAC7C,yDAAmD;AACnD,2DAAqD;AAE9C,MAAM,aAAa,GAAG,KAAK,EAAE,GAAkB,EAAE,MAAc,EAAE,QAAwB,EAAE,EAAE;IAChG,IAAI;QACA,MAAM,OAAO,GAAG,IAAA,oCAAgB,EAAC,GAAG,CAAC,CAAC;QAEtC,MAAM,SAAS,GAAG,MAAM,IAAA,4BAAY,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEnD,MAAM,OAAO,GAAG,MAAM,IAAA,kCAAe,EAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAEvE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC3B;IAAC,OAAO,GAAY,EAAE;QACnB,QAAQ,CAAC,GAAY,CAAC,CAAC;KAC1B;AACL,CAAC,CAAC;AAZW,QAAA,aAAa,iBAYxB"}
+2
View File
@@ -0,0 +1,2 @@
import type { LoaderContext, StyleResourcesLoaderNormalizedOptions } from '../types';
export declare const matchFiles: (ctx: LoaderContext, options: StyleResourcesLoaderNormalizedOptions) => Promise<string[]>;
+31
View File
@@ -0,0 +1,31 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.matchFiles = void 0;
const tslib_1 = require("tslib");
const path_1 = (0, tslib_1.__importDefault)(require("path"));
const util_1 = (0, tslib_1.__importDefault)(require("util"));
const glob_1 = (0, tslib_1.__importDefault)(require("glob"));
const type_guards_1 = require("./type-guards");
const isLegacyWebpack = (ctx) => !!ctx.options;
const getRootContext = (ctx) => {
if (isLegacyWebpack(ctx)) {
return ctx.options.context;
}
return ctx.rootContext;
};
const flatten = (items) => {
const emptyItems = [];
return emptyItems.concat(...items);
};
const matchFiles = async (ctx, options) => {
const { patterns, globOptions } = options;
const files = await Promise.all(patterns.map(async (pattern) => {
const rootContext = getRootContext(ctx);
const absolutePattern = path_1.default.isAbsolute(pattern) ? pattern : path_1.default.resolve(rootContext, pattern);
const partialFiles = await util_1.default.promisify(glob_1.default)(absolutePattern, globOptions);
return partialFiles.filter(type_guards_1.isStyleFile);
}));
return [...new Set(flatten(files))].map(file => path_1.default.resolve(file));
};
exports.matchFiles = matchFiles;
//# sourceMappingURL=match-files.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"match-files.js","sourceRoot":"","sources":["../../src/utils/match-files.ts"],"names":[],"mappings":";;;;AAAA,6DAAwB;AACxB,6DAAwB;AAExB,6DAAwB;AAIxB,+CAA0C;AAG1C,MAAM,eAAe,GAAG,CAAC,GAAQ,EAAuC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AAEzF,MAAM,cAAc,GAAG,CAAC,GAAkB,EAAE,EAAE;IAE1C,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE;QACtB,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;KAC9B;IAED,OAAO,GAAG,CAAC,WAAW,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAI,KAAY,EAAE,EAAE;IAChC,MAAM,UAAU,GAAQ,EAAE,CAAC;IAE3B,OAAO,UAAU,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC;AACvC,CAAC,CAAC;AAEK,MAAM,UAAU,GAAG,KAAK,EAAE,GAAkB,EAAE,OAA8C,EAAE,EAAE;IACnG,MAAM,EAAC,QAAQ,EAAE,WAAW,EAAC,GAAG,OAAO,CAAC;IAExC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC3B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;QACzB,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,eAAe,GAAG,cAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAChG,MAAM,YAAY,GAAG,MAAM,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QAE9E,OAAO,YAAY,CAAC,MAAM,CAAC,yBAAW,CAAC,CAAC;IAC5C,CAAC,CAAC,CACL,CAAC;IAQF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC;AApBW,QAAA,UAAU,cAoBrB"}
+2
View File
@@ -0,0 +1,2 @@
import type { LoaderContext, StyleResourcesLoaderNormalizedOptions } from '../types';
export declare const normalizeOptions: (ctx: LoaderContext) => StyleResourcesLoaderNormalizedOptions;
+31
View File
@@ -0,0 +1,31 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.normalizeOptions = void 0;
const os_1 = require("os");
const loader_utils_1 = require("loader-utils");
const validate_options_1 = require("./validate-options");
const normalizePatterns = (patterns) => Array.isArray(patterns) ? patterns : [patterns];
const coerceContentEOL = (content) => (content.endsWith(os_1.EOL) ? content : `${content}${os_1.EOL}`);
const getResourceContent = ({ content }) => coerceContentEOL(content);
const normalizeInjector = (injector) => {
if (typeof injector === 'undefined' || injector === 'prepend') {
return (source, resources) => resources.map(getResourceContent).join('') + source;
}
if (injector === 'append') {
return (source, resources) => source + resources.map(getResourceContent).join('');
}
return injector;
};
const normalizeOptions = (ctx) => {
const options = (0, loader_utils_1.getOptions)(ctx);
(0, validate_options_1.validateOptions)(options);
const { patterns, injector, globOptions = {}, resolveUrl = true } = options;
return {
patterns: normalizePatterns(patterns),
injector: normalizeInjector(injector),
globOptions,
resolveUrl,
};
};
exports.normalizeOptions = normalizeOptions;
//# sourceMappingURL=normalize-options.js.map
@@ -0,0 +1 @@
{"version":3,"file":"normalize-options.js","sourceRoot":"","sources":["../../src/utils/normalize-options.ts"],"names":[],"mappings":";;;AAAA,2BAAuB;AAEvB,+CAAwC;AAUxC,yDAAmD;AAEnD,MAAM,iBAAiB,GAAG,CAAC,QAAiD,EAAE,EAAE,CAC5E,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAEpD,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,QAAG,EAAE,CAAC,CAAC;AACrG,MAAM,kBAAkB,GAAG,CAAC,EAAC,OAAO,EAAgB,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAEnF,MAAM,iBAAiB,GAAG,CAAC,QAAiD,EAAoC,EAAE;IAC9G,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,SAAS,EAAE;QAC3D,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;KACrF;IAED,IAAI,QAAQ,KAAK,QAAQ,EAAE;QACvB,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACrF;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC;AAEK,MAAM,gBAAgB,GAAG,CAAC,GAAkB,EAAyC,EAAE;IAC1F,MAAM,OAAO,GAAG,IAAA,yBAAU,EAAC,GAAG,CAAC,CAAC;IAEhC,IAAA,kCAAe,EAA8B,OAAO,CAAC,CAAC;IAEtD,MAAM,EAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,GAAG,EAAE,EAAE,UAAU,GAAG,IAAI,EAAC,GAAG,OAAO,CAAC;IAE1E,OAAO;QACH,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC;QACrC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC;QACrC,WAAW;QACX,UAAU;KACb,CAAC;AACN,CAAC,CAAC;AAbW,QAAA,gBAAgB,oBAa3B"}
@@ -0,0 +1,2 @@
import type { LoaderContext, StyleResource } from '../types';
export declare const resolveImportUrl: (ctx: LoaderContext, { file, content }: StyleResource) => StyleResource;
+22
View File
@@ -0,0 +1,22 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveImportUrl = void 0;
const tslib_1 = require("tslib");
const path_1 = (0, tslib_1.__importDefault)(require("path"));
const regex = /@(?:import|require)\s+(?:\([a-z,\s]+\)\s*)?['"]?([^'"\s;]+)['"]?;?/gu;
const resolveImportUrl = (ctx, { file, content }) => ({
file,
content: content.replace(regex, (match, pathToResource) => {
if (!pathToResource || /^[~/]/u.test(pathToResource)) {
return match;
}
const absolutePathToResource = path_1.default.resolve(path_1.default.dirname(file), pathToResource);
const relativePathFromContextToResource = path_1.default
.relative(ctx.context, absolutePathToResource)
.split(path_1.default.sep)
.join('/');
return match.replace(pathToResource, relativePathFromContextToResource);
}),
});
exports.resolveImportUrl = resolveImportUrl;
//# sourceMappingURL=resolve-import-url.js.map
@@ -0,0 +1 @@
{"version":3,"file":"resolve-import-url.js","sourceRoot":"","sources":["../../src/utils/resolve-import-url.ts"],"names":[],"mappings":";;;;AAAA,6DAAwB;AAKxB,MAAM,KAAK,GAAG,sEAAsE,CAAC;AAE9E,MAAM,gBAAgB,GAAG,CAAC,GAAkB,EAAE,EAAC,IAAI,EAAE,OAAO,EAAgB,EAAiB,EAAE,CAAC,CAAC;IACpG,IAAI;IACJ,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAa,EAAE,cAAuB,EAAE,EAAE;QACvE,IAAI,CAAC,cAAc,IAAI,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YAClD,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,sBAAsB,GAAG,cAAI,CAAC,OAAO,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;QAChF,MAAM,iCAAiC,GAAG,cAAI;aACzC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,sBAAsB,CAAC;aAC7C,KAAK,CAAC,cAAI,CAAC,GAAG,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,CAAC;QAEf,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,iCAAiC,CAAC,CAAC;IAC5E,CAAC,CAAC;CACL,CAAC,CAAC;AAfU,QAAA,gBAAgB,oBAe1B"}
+2
View File
@@ -0,0 +1,2 @@
export declare const isFunction: <T extends (...args: any[]) => any>(arg: any) => arg is T;
export declare const isStyleFile: (file: string) => boolean;
+11
View File
@@ -0,0 +1,11 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.isStyleFile = exports.isFunction = void 0;
const tslib_1 = require("tslib");
const path_1 = (0, tslib_1.__importDefault)(require("path"));
const constants_1 = require("./constants");
const isFunction = (arg) => typeof arg === 'function';
exports.isFunction = isFunction;
const isStyleFile = (file) => constants_1.SUPPORTED_FILE_EXTS.includes(path_1.default.extname(file));
exports.isStyleFile = isStyleFile;
//# sourceMappingURL=type-guards.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"type-guards.js","sourceRoot":"","sources":["../../src/utils/type-guards.ts"],"names":[],"mappings":";;;;AAAA,6DAAwB;AAExB,2CAAgD;AAEzC,MAAM,UAAU,GAAG,CAAoC,GAAQ,EAAY,EAAE,CAAC,OAAO,GAAG,KAAK,UAAU,CAAC;AAAlG,QAAA,UAAU,cAAwF;AAExG,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,+BAAmB,CAAC,QAAQ,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAAjF,QAAA,WAAW,eAAsE"}
+1
View File
@@ -0,0 +1 @@
export declare const validateOptions: <T extends object>(options: object) => asserts options is T;
+13
View File
@@ -0,0 +1,13 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateOptions = void 0;
const tslib_1 = require("tslib");
const schema_utils_1 = (0, tslib_1.__importDefault)(require("schema-utils"));
const schema_1 = require("../schema");
const constants_1 = require("./constants");
const validateOptions = options => (0, schema_utils_1.default)(schema_1.schema, options, {
name: constants_1.LOADER_NAME,
baseDataPath: constants_1.VALIDATION_BASE_DATA_PATH,
});
exports.validateOptions = validateOptions;
//# sourceMappingURL=validate-options.js.map
@@ -0,0 +1 @@
{"version":3,"file":"validate-options.js","sourceRoot":"","sources":["../../src/utils/validate-options.ts"],"names":[],"mappings":";;;;AAAA,6EAAoC;AAEpC,sCAAiC;AAEjC,2CAAmE;AAE5D,MAAM,eAAe,GAAgE,OAAO,CAAC,EAAE,CAClG,IAAA,sBAAQ,EAAC,eAAM,EAAE,OAAO,EAAE;IACtB,IAAI,EAAE,uBAAW;IACjB,YAAY,EAAE,qCAAyB;CAC1C,CAAC,CAAC;AAJM,QAAA,eAAe,mBAIrB"}