GitHub
Tests: 12 • Commercial: 2 • Pet projects: 4 • Legacy: 4
Total: 22

.NET Framework

Test
2021

Project Request

ASP.NET MVC • C# • SQL Server
Idea of the project: if someone wants to order a project development, here you can send an application.
Test
2020

ProjectC

ASP.NET MVC • C# • JSON • jQuery
JSON data processing.
Test
2020

Vehicle Maintenance

ASP.NET MVC • VB.NET • JSON
Idea of the project: if someone wants to order a project development, here you can send an application.
Test
2019

Movie Navigator

ASP.NET MVC • VB.NET
Request information about movie from IMDB.
Test
2018

Customers Exchange

ASP.NET MVC • C# • SQL Server
Automated teller machine emulation.
Test
2016

ATM

ASP.NET MVC • C#
Automated teller machine emulation.

.NET Core

Pet project
2022

Mail Daemon

.NET 9 • Console • JSON
Utility to send mails with customizable settings.

Custom

Code
2024

Buns of code

.NET Framework • C# • JavaScript
Code snippets from my projects, ready to use; tiny tests; code examples.

PHP

Test
2024

Mediabox

PHP 8 • Laravel 11 • Vue.js • Composer • SQLite
Test project for media files management.
Test
2020

Loan Castle

PHP • MariaDB
Jums jāizstrādā kāda lielāk projekta prototips. Izstrādājot prototipu, paturiet prātā, ka projektam attīstoties, šo prototipu varētu vajadzēt pilnveidot.
Test
2020

Content Management

PHP • MySQL • AJAX
Создать простой сайт, где будет страница с формой для авторизации и страница для авторизованного пользователя.
Test
2019

Laravel

PHP • Laravel • Vue.js • Composer • SQLite
Izveidot aplikāciju, kura ik pēc noteikta intervāla (60 sekundes) veic ierakstu datubāzē izmantojot Laravel freimworka iebūvēto funkcionalitāti.
Test
2019

Phone Check

PHP • JavaScript • JSON • Docker
Implement application to detect country by phone number.

Frontend

Test
2021

Forex Wall

npm • React
For this exercise, what we need is a simple live wall for tracking currencies.

Business projects

Commercial
2008

Certification Center

.NET Framework 4.8 • ASP.NET Web Forms • C# • LINQ • SQL Server • ADO.NET • Dapper • JavaScript • jQuery • Git
Transport registration and certification services in Latvia, Customer Relationship Management.
Commercial
2000

Amerikas Auto

.NET Framework 4.8 • ASP.NET Web Forms • C# • LINQ • SQL Server • ADO.NET • Entity Framework • JavaScript • jQuery • Git
Car service and spare parts for all USA and European car models, Customer Relationship Management.

Pet projects

Pet project
2023

Geolocation Assistant

.NET 8 • ASP.NET Core • C# • Web API • JSON • Git
Website for determining geolocation by IP or geotagged photo.
Pet project
2008

Web Dynamics

.NET Framework 4.8 • ASP.NET Web Forms • C# • LINQ • Web API • JSON • SQL Server • Dapper • JavaScript • jQuery • SVG • Git
Software development blog. Articles, books, videos, content management.
Pet project
2000

Blackball

.NET Framework 4.8 • ASP.NET Web Forms • C# • LINQ • Web API • JSON • XML • SQL Server • Dapper • JavaScript • jQuery • SVG • Git
My entertainment portal created from scratch.

Good old times

Legacy
2000

DOS Clock

Turbo Pascal • Assembler
Digital clock.
Legacy
2000

BrainOut

Turbo Pascal • Assembler
Tank battle game.
Legacy
1999

Airport Administrator

Turbo Pascal
Курсовая работа в институте.
Legacy
1998

Atomizer

Turbo Pascal • Assembler
Atomizer, aka «Studio2D». Graphic raster editor. AGI is my own «Atomizer Generated Image» file format.

Mediabox

2024 Test

Test project for media files management.

PHP 8 Laravel 11 Vue.js Composer SQLite
Information
Source code
  app
  Http
  .bin
  vite
  lib
  dist
  esm
  node
  lib
  core
  env
  node
  lib
  lib
  lib
  lib
  dist
  lib
  lib
  dist
  es
  lib
  vite
  dist
  node
  dist
  css
  js
  app
  data
  logs
  Unit
  math
  src
  src
  src
  docs
  en
  lib
  src
  src
  Cron
  src
  src
  Core
  ORM
  Spot
  filp
  src
  css
  js
  Util
  src
  src
  src
  src
  psr7
  src
  src
  Core
  Text
  Type
  Xml
  Core
  Text
  Type
  Xml
  src
  Auth
  make
  Bus
  View
  Auth
  Bus
  Http
  Mail
  View
  Auth
  Bus
  Http
  dist
  Http
  Json
  Log
  Mail
  html
  text
  Jobs
  lang
  en
  View
  pint
  pint
  src
  sail
  8.0
  8.1
  8.2
  8.3
  src
  src
  src
  src
  Node
  Util
  Node
  Node
  Node
  Data
  Node
  Node
  Util
  Xml
  src
  src
  src
  docs
  Pass
  src
  Curl
  Test
  src
  Date
  Spl
  lazy
  src
  Cli
  Lang
  List
  src
  src
  lib
  Node
  Expr
  Cast
  Name
  Stmt
  src
  src
  Html
  src
  xml
  src
  src
  src
  Data
  Node
  Html
  css
  js
  Xml
  Util
  src
  src
  src
  src
  src
  Test
  Test
  Math
  Type
  Api
  Rule
  Stub
  Api
  PHPT
  Cli
  Xml
  Util
  PHP
  Xml
  psr
  src
  src
  src
  src
  src
  docs
  src
  log
  src
  src
  psy
  src
  Hoa
  77
  78
  Sudo
  Util
  src
  src
  Map
  Tool
  uuid
  src
  Time
  Guid
  Lazy
  Math
  Dce
  Node
  Time
  Type
  src
  src
  src
  src
  src
  diff
  src
  src
  src
  src
  src
  src
  src
  src
  type
  src
  type
  src
  Test
  CI
  Node
  css
  js
  File
  Test
  Log
  Test
  Smtp
  Auth
  mime
  Part
  Test
  Test
  data
  data
  Test
  Util
  Test
  uid
  css
  js
  Test
  yaml
  Tag
  src
  src
  Css
  Rule
  src
  File
  Util
  voku
  src
  voku
  data
  src
  .env
Root / node_modules / vite / dist / node / chunks / dep-CHbHjMYU.js
import { B as getDefaultExportFromCjs } from './dep-BzOvws4Y.js'; import require$$0 from 'path'; import require$$0__default from 'fs'; import { l as lib } from './dep-IQS-Za7F.js'; import { fileURLToPath as __cjs_fileURLToPath } from 'node:url'; import { dirname as __cjs_dirname } from 'node:path'; import { createRequire as __cjs_createRequire } from 'node:module'; const __filename = __cjs_fileURLToPath(import.meta.url); const __dirname = __cjs_dirname(__filename); const require = __cjs_createRequire(import.meta.url); const __require = require; function _mergeNamespaces(n, m) { for (var i = 0; i < m.length; i++) { var e = m[i]; if (typeof e !== 'string' && !Array.isArray(e)) { for (var k in e) { if (k !== 'default' && !(k in n)) { n[k] = e[k]; } } } } return n; } var formatImportPrelude$2 = function formatImportPrelude(layer, media, supports) { const parts = []; if (typeof layer !== "undefined") { let layerParams = "layer"; if (layer) { layerParams = `layer(${layer})`; } parts.push(layerParams); } if (typeof supports !== "undefined") { parts.push(`supports(${supports})`); } if (typeof media !== "undefined") { parts.push(media); } return parts.join(" ") }; const formatImportPrelude$1 = formatImportPrelude$2; // Base64 encode an import with conditions // The order of conditions is important and is interleaved with cascade layer declarations // Each group of conditions and cascade layers needs to be interpreted in order // To achieve this we create a list of base64 encoded imports, where each import contains a stylesheet with another import. // Each import can define a single group of conditions and a single cascade layer. var base64EncodedImport = function base64EncodedConditionalImport(prelude, conditions) { conditions.reverse(); const first = conditions.pop(); let params = `${prelude} ${formatImportPrelude$1( first.layer, first.media, first.supports, )}`; for (const condition of conditions) { params = `'data:text/css;base64,${Buffer.from(`@import ${params}`).toString( "base64", )}' ${formatImportPrelude$1( condition.layer, condition.media, condition.supports, )}`; } return params }; const base64EncodedConditionalImport = base64EncodedImport; var applyConditions$1 = function applyConditions(bundle, atRule) { bundle.forEach(stmt => { if ( stmt.type === "charset" || stmt.type === "warning" || !stmt.conditions?.length ) { return } if (stmt.type === "import") { stmt.node.params = base64EncodedConditionalImport( stmt.fullUri, stmt.conditions, ); return } const { nodes } = stmt; const { parent } = nodes[0]; const atRules = []; // Convert conditions to at-rules for (const condition of stmt.conditions) { if (typeof condition.media !== "undefined") { const mediaNode = atRule({ name: "media", params: condition.media, source: parent.source, }); atRules.push(mediaNode); } if (typeof condition.supports !== "undefined") { const supportsNode = atRule({ name: "supports", params: `(${condition.supports})`, source: parent.source, }); atRules.push(supportsNode); } if (typeof condition.layer !== "undefined") { const layerNode = atRule({ name: "layer", params: condition.layer, source: parent.source, }); atRules.push(layerNode); } } // Add nodes to AST const outerAtRule = atRules.shift(); const innerAtRule = atRules.reduce((previous, next) => { previous.append(next); return next }, outerAtRule); parent.insertBefore(nodes[0], outerAtRule); // remove nodes nodes.forEach(node => { node.parent = undefined; }); // better output nodes[0].raws.before = nodes[0].raws.before || "\n"; // wrap new rules with media query and/or layer at rule innerAtRule.append(nodes); stmt.type = "nodes"; stmt.nodes = [outerAtRule]; delete stmt.node; }); }; var applyRaws$1 = function applyRaws(bundle) { bundle.forEach((stmt, index) => { if (index === 0) return if (stmt.parent) { const { before } = stmt.parent.node.raws; if (stmt.type === "nodes") stmt.nodes[0].raws.before = before; else stmt.node.raws.before = before; } else if (stmt.type === "nodes") { stmt.nodes[0].raws.before = stmt.nodes[0].raws.before || "\n"; } }); }; var applyStyles$1 = function applyStyles(bundle, styles) { styles.nodes = []; // Strip additional statements. bundle.forEach(stmt => { if (["charset", "import"].includes(stmt.type)) { stmt.node.parent = undefined; styles.append(stmt.node); } else if (stmt.type === "nodes") { stmt.nodes.forEach(node => { node.parent = undefined; styles.append(node); }); } }); }; var readCache$1 = {exports: {}}; var pify$2 = {exports: {}}; var processFn = function (fn, P, opts) {     return function () {         var that = this;         var args = new Array(arguments.length);         for (var i = 0; i < arguments.length; i++) {             args[i] = arguments[i];         }         return new P(function (resolve, reject) {             args.push(function (err, result) {                 if (err) {                     reject(err);                 } else if (opts.multiArgs) {                     var results = new Array(arguments.length - 1);                     for (var i = 1; i < arguments.length; i++) {                         results[i - 1] = arguments[i];                     }                     resolve(results);                 } else {                     resolve(result);                 }             });             fn.apply(that, args);         });     }; }; var pify$1 = pify$2.exports = function (obj, P, opts) {     if (typeof P !== 'function') {         opts = P;         P = Promise;     }     opts = opts || {};     opts.exclude = opts.exclude || [/.+Sync$/];     var filter = function (key) {         var match = function (pattern) {             return typeof pattern === 'string' ? key === pattern : pattern.test(key);         };         return opts.include ? opts.include.some(match) : !opts.exclude.some(match);     };     var ret = typeof obj === 'function' ? function () {         if (opts.excludeMain) {             return obj.apply(this, arguments);         }         return processFn(obj, P, opts).apply(this, arguments);     } : {};     return Object.keys(obj).reduce(function (ret, key) {         var x = obj[key];         ret[key] = typeof x === 'function' && filter(key) ? processFn(x, P, opts) : x;         return ret;     }, ret); }; pify$1.all = pify$1; var pifyExports = pify$2.exports; var fs = require$$0__default; var path$3 = require$$0; var pify = pifyExports; var stat = pify(fs.stat); var readFile = pify(fs.readFile); var resolve = path$3.resolve; var cache = Object.create(null); function convert(content, encoding) {     if (Buffer.isEncoding(encoding)) {         return content.toString(encoding);     }     return content; } readCache$1.exports = function (path, encoding) {     path = resolve(path);     return stat(path).then(function (stats) {         var item = cache[path];         if (item && item.mtime.getTime() === stats.mtime.getTime()) {             return convert(item.content, encoding);         }         return readFile(path).then(function (data) {             cache[path] = {                 mtime: stats.mtime,                 content: data             };             return convert(data, encoding);         });     }).catch(function (err) {         cache[path] = null;         return Promise.reject(err);     }); }; readCache$1.exports.sync = function (path, encoding) {     path = resolve(path);     try {         var stats = fs.statSync(path);         var item = cache[path];         if (item && item.mtime.getTime() === stats.mtime.getTime()) {             return convert(item.content, encoding);         }         var data = fs.readFileSync(path);         cache[path] = {             mtime: stats.mtime,             content: data         };         return convert(data, encoding);     } catch (err) {         cache[path] = null;         throw err;     } }; readCache$1.exports.get = function (path, encoding) {     path = resolve(path);     if (cache[path]) {         return convert(cache[path].content, encoding);     }     return null; }; readCache$1.exports.clear = function () {     cache = Object.create(null); }; var readCacheExports = readCache$1.exports; const anyDataURLRegexp = /^data:text\/css(?:;(base64|plain))?,/i; const base64DataURLRegexp = /^data:text\/css;base64,/i; const plainDataURLRegexp = /^data:text\/css;plain,/i; function isValid(url) { return anyDataURLRegexp.test(url) } function contents(url) { if (base64DataURLRegexp.test(url)) { // "data:text/css;base64,".length === 21 return Buffer.from(url.slice(21), "base64").toString() } if (plainDataURLRegexp.test(url)) { // "data:text/css;plain,".length === 20 return decodeURIComponent(url.slice(20)) } // "data:text/css,".length === 14 return decodeURIComponent(url.slice(14)) } var dataUrl = { isValid, contents, }; const readCache = readCacheExports; const dataURL$1 = dataUrl; var loadContent$1 = function loadContent(filename) { if (dataURL$1.isValid(filename)) { return dataURL$1.contents(filename) } return readCache(filename, "utf-8") }; // external tooling const valueParser = lib; // extended tooling const { stringify } = valueParser; var parseStatements$1 = function parseStatements(result, styles, conditions, from) { const statements = []; let nodes = []; styles.each(node => { let stmt; if (node.type === "atrule") { if (node.name === "import") stmt = parseImport(result, node, conditions, from); else if (node.name === "charset") stmt = parseCharset(result, node, conditions, from); } if (stmt) { if (nodes.length) { statements.push({ type: "nodes", nodes, conditions: [...conditions], from, }); nodes = []; } statements.push(stmt); } else nodes.push(node); }); if (nodes.length) { statements.push({ type: "nodes", nodes, conditions: [...conditions], from, }); } return statements }; function parseCharset(result, atRule, conditions, from) { if (atRule.prev()) { return result.warn("@charset must precede all other statements", { node: atRule, }) } return { type: "charset", node: atRule, conditions: [...conditions], from, } } function parseImport(result, atRule, conditions, from) { let prev = atRule.prev(); // `@import` statements may follow other `@import` statements. if (prev) { do { if ( prev.type === "comment" || (prev.type === "atrule" && prev.name === "import") ) { prev = prev.prev(); continue } break } while (prev) } // All `@import` statements may be preceded by `@charset` or `@layer` statements. // But the `@import` statements must be consecutive. if (prev) { do { if ( prev.type === "comment" || (prev.type === "atrule" && (prev.name === "charset" || (prev.name === "layer" && !prev.nodes))) ) { prev = prev.prev(); continue } return result.warn( "@import must precede all other statements (besides @charset or empty @layer)", { node: atRule }, ) } while (prev) } if (atRule.nodes) { return result.warn( "It looks like you didn't end your @import statement correctly. " + "Child nodes are attached to it.", { node: atRule }, ) } const params = valueParser(atRule.params).nodes; const stmt = { type: "import", uri: "", fullUri: "", node: atRule, conditions: [...conditions], from, }; let layer; let media; let supports; for (let i = 0; i < params.length; i++) { const node = params[i]; if (node.type === "space" || node.type === "comment") continue if (node.type === "string") { if (stmt.uri) { return result.warn(`Multiple url's in '${atRule.toString()}'`, { node: atRule, }) } if (!node.value) { return result.warn(`Unable to find uri in '${atRule.toString()}'`, { node: atRule, }) } stmt.uri = node.value; stmt.fullUri = stringify(node); continue } if (node.type === "function" && /^url$/i.test(node.value)) { if (stmt.uri) { return result.warn(`Multiple url's in '${atRule.toString()}'`, { node: atRule, }) } if (!node.nodes?.[0]?.value) { return result.warn(`Unable to find uri in '${atRule.toString()}'`, { node: atRule, }) } stmt.uri = node.nodes[0].value; stmt.fullUri = stringify(node); continue } if (!stmt.uri) { return result.warn(`Unable to find uri in '${atRule.toString()}'`, { node: atRule, }) } if ( (node.type === "word" || node.type === "function") && /^layer$/i.test(node.value) ) { if (typeof layer !== "undefined") { return result.warn(`Multiple layers in '${atRule.toString()}'`, { node: atRule, }) } if (typeof supports !== "undefined") { return result.warn( `layers must be defined before support conditions in '${atRule.toString()}'`, { node: atRule, }, ) } if (node.nodes) { layer = stringify(node.nodes); } else { layer = ""; } continue } if (node.type === "function" && /^supports$/i.test(node.value)) { if (typeof supports !== "undefined") { return result.warn( `Multiple support conditions in '${atRule.toString()}'`, { node: atRule, }, ) } supports = stringify(node.nodes); continue } media = stringify(params.slice(i)); break } if (!stmt.uri) { return result.warn(`Unable to find uri in '${atRule.toString()}'`, { node: atRule, }) } if ( typeof media !== "undefined" || typeof layer !== "undefined" || typeof supports !== "undefined" ) { stmt.conditions.push({ layer, media, supports, }); } return stmt } // builtin tooling const path$2 = require$$0; // placeholder tooling let sugarss; var processContent$1 = function processContent( result, content, filename, options, postcss, ) { const { plugins } = options; const ext = path$2.extname(filename); const parserList = []; // SugarSS support: if (ext === ".sss") { if (!sugarss) { /* c8 ignore next 3 */ try { sugarss = __require('sugarss'); } catch {} // Ignore } if (sugarss) return runPostcss(postcss, content, filename, plugins, [sugarss]) } // Syntax support: if (result.opts.syntax?.parse) { parserList.push(result.opts.syntax.parse); } // Parser support: if (result.opts.parser) parserList.push(result.opts.parser); // Try the default as a last resort: parserList.push(null); return runPostcss(postcss, content, filename, plugins, parserList) }; function runPostcss(postcss, content, filename, plugins, parsers, index) { if (!index) index = 0; return postcss(plugins) .process(content, { from: filename, parser: parsers[index], }) .catch(err => { // If there's an error, try the next parser index++; // If there are no parsers left, throw it if (index === parsers.length) throw err return runPostcss(postcss, content, filename, plugins, parsers, index) }) } const path$1 = require$$0; const dataURL = dataUrl; const parseStatements = parseStatements$1; const processContent = processContent$1; const resolveId$1 = (id) => id; const formatImportPrelude = formatImportPrelude$2; async function parseStyles$1( result, styles, options, state, conditions, from, postcss, ) { const statements = parseStatements(result, styles, conditions, from); for (const stmt of statements) { if (stmt.type !== "import" || !isProcessableURL(stmt.uri)) { continue } if (options.filter && !options.filter(stmt.uri)) { // rejected by filter continue } await resolveImportId(result, stmt, options, state, postcss); } let charset; const imports = []; const bundle = []; function handleCharset(stmt) { if (!charset) charset = stmt; // charsets aren't case-sensitive, so convert to lower case to compare else if ( stmt.node.params.toLowerCase() !== charset.node.params.toLowerCase() ) { throw stmt.node.error( `Incompatible @charset statements: ${stmt.node.params} specified in ${stmt.node.source.input.file} ${charset.node.params} specified in ${charset.node.source.input.file}`, ) } } // squash statements and their children statements.forEach(stmt => { if (stmt.type === "charset") handleCharset(stmt); else if (stmt.type === "import") { if (stmt.children) { stmt.children.forEach((child, index) => { if (child.type === "import") imports.push(child); else if (child.type === "charset") handleCharset(child); else bundle.push(child); // For better output if (index === 0) child.parent = stmt; }); } else imports.push(stmt); } else if (stmt.type === "nodes") { bundle.push(stmt); } }); return charset ? [charset, ...imports.concat(bundle)] : imports.concat(bundle) } async function resolveImportId(result, stmt, options, state, postcss) { if (dataURL.isValid(stmt.uri)) { // eslint-disable-next-line require-atomic-updates stmt.children = await loadImportContent( result, stmt, stmt.uri, options, state, postcss, ); return } else if (dataURL.isValid(stmt.from.slice(-1))) { // Data urls can't be used as a base url to resolve imports. throw stmt.node.error( `Unable to import '${stmt.uri}' from a stylesheet that is embedded in a data url`, ) } const atRule = stmt.node; let sourceFile; if (atRule.source?.input?.file) { sourceFile = atRule.source.input.file; } const base = sourceFile ? path$1.dirname(atRule.source.input.file) : options.root; const paths = [await options.resolve(stmt.uri, base, options, atRule)].flat(); // Ensure that each path is absolute: const resolved = await Promise.all( paths.map(file => { return !path$1.isAbsolute(file) ? resolveId$1(file) : file }), ); // Add dependency messages: resolved.forEach(file => { result.messages.push({ type: "dependency", plugin: "postcss-import", file, parent: sourceFile, }); }); const importedContent = await Promise.all( resolved.map(file => { return loadImportContent(result, stmt, file, options, state, postcss) }), ); // Merge loaded statements // eslint-disable-next-line require-atomic-updates stmt.children = importedContent.flat().filter(x => !!x); } async function loadImportContent( result, stmt, filename, options, state, postcss, ) { const atRule = stmt.node; const { conditions, from } = stmt; const stmtDuplicateCheckKey = conditions .map(condition => formatImportPrelude(condition.layer, condition.media, condition.supports), ) .join(":"); if (options.skipDuplicates) { // skip files already imported at the same scope if (state.importedFiles[filename]?.[stmtDuplicateCheckKey]) { return } // save imported files to skip them next time if (!state.importedFiles[filename]) { state.importedFiles[filename] = {}; } state.importedFiles[filename][stmtDuplicateCheckKey] = true; } if (from.includes(filename)) { return } const content = await options.load(filename, options); if (content.trim() === "" && options.warnOnEmpty) { result.warn(`${filename} is empty`, { node: atRule }); return } // skip previous imported files not containing @import rules if ( options.skipDuplicates && state.hashFiles[content]?.[stmtDuplicateCheckKey] ) { return } const importedResult = await processContent( result, content, filename, options, postcss, ); const styles = importedResult.root; result.messages = result.messages.concat(importedResult.messages); if (options.skipDuplicates) { const hasImport = styles.some(child => { return child.type === "atrule" && child.name === "import" }); if (!hasImport) { // save hash files to skip them next time if (!state.hashFiles[content]) { state.hashFiles[content] = {}; } state.hashFiles[content][stmtDuplicateCheckKey] = true; } } // recursion: import @import from imported file return parseStyles$1( result, styles, options, state, conditions, [...from, filename], postcss, ) } function isProcessableURL(uri) { // skip protocol base uri (protocol://url) or protocol-relative if (/^(?:[a-z]+:)?\/\//i.test(uri)) { return false } // check for fragment or query try { // needs a base to parse properly const url = new URL(uri, "https://example.com"); if (url.search) { return false } } catch {} // Ignore return true } var parseStyles_1 = parseStyles$1; // builtin tooling const path = require$$0; // internal tooling const applyConditions = applyConditions$1; const applyRaws = applyRaws$1; const applyStyles = applyStyles$1; const loadContent = loadContent$1; const parseStyles = parseStyles_1; const resolveId = (id) => id; function AtImport(options) { options = { root: process.cwd(), path: [], skipDuplicates: true, resolve: resolveId, load: loadContent, plugins: [], addModulesDirectories: [], warnOnEmpty: true, ...options, }; options.root = path.resolve(options.root); // convert string to an array of a single element if (typeof options.path === "string") options.path = [options.path]; if (!Array.isArray(options.path)) options.path = []; options.path = options.path.map(p => path.resolve(options.root, p)); return { postcssPlugin: "postcss-import", async Once(styles, { result, atRule, postcss }) { const state = { importedFiles: {}, hashFiles: {}, }; if (styles.source?.input?.file) { state.importedFiles[styles.source.input.file] = {}; } if (options.plugins && !Array.isArray(options.plugins)) { throw new Error("plugins option must be an array") } const bundle = await parseStyles( result, styles, options, state, [], [], postcss, ); applyRaws(bundle); applyConditions(bundle, atRule); applyStyles(bundle, styles); }, } } AtImport.postcss = true; var postcssImport = AtImport; var index = /*@__PURE__*/getDefaultExportFromCjs(postcssImport); var index$1 = /*#__PURE__*/_mergeNamespaces({ __proto__: null, default: index }, [postcssImport]); export { index$1 as i };