@rindo/core 3.1.0 → 3.2.1

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rindo/core/internal/app-data",
3
- "version": "3.1.0",
3
+ "version": "3.2.1",
4
4
  "description": "Used for default app data and build conditionals within builds.",
5
5
  "main": "./index.cjs",
6
6
  "module": "./index.js",
@@ -1,4 +1,4 @@
1
1
  /*
2
- Rindo Client Patch Esm v3.1.0 | MIT Licensed | https://rindojs.web.app
2
+ Rindo Client Patch Esm v3.2.1 | MIT Licensed | https://rindojs.web.app
3
3
  */
4
4
  var __assign=undefined&&undefined.__assign||function(){return __assign=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var s in t=arguments[r])Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s]);return e},__assign.apply(this,arguments)},StyleNode=function(){this.start=0,this.end=0,this.previous=null,this.parent=null,this.rules=null,this.parsedCssText="",this.cssText="",this.atRule=!1,this.type=0,this.keyframesName="",this.selector="",this.parsedSelector="";};function parse(e){return parseCss(lex(e=clean(e)),e)}function clean(e){return e.replace(RX.comments,"").replace(RX.port,"")}function lex(e){var t=new StyleNode;t.start=0,t.end=e.length;for(var r=t,n=0,s=e.length;n<s;n++)if(e[n]===OPEN_BRACE){r.rules||(r.rules=[]);var o=r,a=o.rules[o.rules.length-1]||null;(r=new StyleNode).start=n+1,r.parent=o,r.previous=a,o.rules.push(r);}else e[n]===CLOSE_BRACE&&(r.end=n+1,r=r.parent||t);return t}function parseCss(e,t){var r=t.substring(e.start,e.end-1);if(e.parsedCssText=e.cssText=r.trim(),e.parent){var n=e.previous?e.previous.end:e.parent.start;r=(r=(r=_expandUnicodeEscapes(r=t.substring(n,e.start-1))).replace(RX.multipleSpaces," ")).substring(r.lastIndexOf(";")+1);var s=e.parsedSelector=e.selector=r.trim();e.atRule=0===s.indexOf(AT_START),e.atRule?0===s.indexOf(MEDIA_START)?e.type=types.MEDIA_RULE:s.match(RX.keyframesRule)&&(e.type=types.KEYFRAMES_RULE,e.keyframesName=e.selector.split(RX.multipleSpaces).pop()):0===s.indexOf(VAR_START)?e.type=types.MIXIN_RULE:e.type=types.STYLE_RULE;}var o=e.rules;if(o)for(var a=0,i=o.length,l=void 0;a<i&&(l=o[a]);a++)parseCss(l,t);return e}function _expandUnicodeEscapes(e){return e.replace(/\\([0-9a-f]{1,6})\s/gi,(function(){for(var e=arguments[1],t=6-e.length;t--;)e="0"+e;return "\\"+e}))}var types={STYLE_RULE:1,KEYFRAMES_RULE:7,MEDIA_RULE:4,MIXIN_RULE:1e3},OPEN_BRACE="{",CLOSE_BRACE="}",RX={comments:/\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim,port:/@import[^;]*;/gim,customProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim,mixinProp:/(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\n]|$)?/gim,mixinApply:/@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/gim,varApply:/[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim,keyframesRule:/^@[^\s]*keyframes/,multipleSpaces:/\s+/g},VAR_START="--",MEDIA_START="@media",AT_START="@",VAR_USAGE_START=/\bvar\(/,VAR_ASSIGN_START=/\B--[\w-]+\s*:/,COMMENTS=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim,TRAILING_LINES=/^[\t ]+\n/gm;function findRegex(e,t,r){e.lastIndex=0;var n=t.substring(r).match(e);if(n){var s=r+n.index;return {start:s,end:s+n[0].length}}return null}function resolveVar(e,t,r){return e[t]?e[t]:r?executeTemplate(r,e):""}function findVarEndIndex(e,t){for(var r=0,n=t;n<e.length;n++){var s=e[n];if("("===s)r++;else if(")"===s&&--r<=0)return n+1}return n}function parseVar(e,t){var r=findRegex(VAR_USAGE_START,e,t);if(!r)return null;var n=findVarEndIndex(e,r.start),s=e.substring(r.end,n-1).split(","),o=s[0],a=s.slice(1);return {start:r.start,end:n,propName:o.trim(),fallback:a.length>0?a.join(",").trim():void 0}}function compileVar(e,t,r){var n=parseVar(e,r);if(!n)return t.push(e.substring(r,e.length)),e.length;var s=n.propName,o=null!=n.fallback?compileTemplate(n.fallback):void 0;return t.push(e.substring(r,n.start),(function(e){return resolveVar(e,s,o)})),n.end}function executeTemplate(e,t){for(var r="",n=0;n<e.length;n++){var s=e[n];r+="string"==typeof s?s:s(t);}return r}function findEndValue(e,t){for(var r=!1,n=!1,s=t;s<e.length;s++){var o=e[s];if(r)n&&'"'===o&&(r=!1),n||"'"!==o||(r=!1);else if('"'===o)r=!0,n=!0;else if("'"===o)r=!0,n=!1;else {if(";"===o)return s+1;if("}"===o)return s}}return s}function removeCustomAssigns(e){for(var t="",r=0;;){var n=findRegex(VAR_ASSIGN_START,e,r),s=n?n.start:e.length;if(t+=e.substring(r,s),!n)break;r=findEndValue(e,s);}return t}function compileTemplate(e){var t=0;e=removeCustomAssigns(e=e.replace(COMMENTS,"")).replace(TRAILING_LINES,"");for(var r=[];t<e.length;)t=compileVar(e,r,t);return r}function resolveValues(e){var t={};e.forEach((function(e){e.declarations.forEach((function(e){t[e.prop]=e.value;}));}));for(var r={},n=Object.entries(t),s=function(e){var t=!1;if(n.forEach((function(e){var n=e[0],s=executeTemplate(e[1],r);s!==r[n]&&(r[n]=s,t=!0);})),!t)return "break"},o=0;o<10;o++){if("break"===s())break}return r}function getSelectors(e,t){if(void 0===t&&(t=0),!e.rules)return [];var r=[];return e.rules.filter((function(e){return e.type===types.STYLE_RULE})).forEach((function(e){var n=getDeclarations(e.cssText);n.length>0&&e.parsedSelector.split(",").forEach((function(e){e=e.trim(),r.push({selector:e,declarations:n,specificity:computeSpecificity(),nu:t});})),t++;})),r}function computeSpecificity(e){return 1}var IMPORTANT="!important",FIND_DECLARATIONS=/(?:^|[;\s{]\s*)(--[\w-]*?)\s*:\s*(?:((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};{])+)|\{([^}]*)\}(?:(?=[;\s}])|$))/gm;function getDeclarations(e){for(var t,r=[];t=FIND_DECLARATIONS.exec(e.trim());){var n=normalizeValue(t[2]),s=n.value,o=n.important;r.push({prop:t[1].trim(),value:compileTemplate(s),important:o});}return r}function normalizeValue(e){var t=(e=e.replace(/\s+/gim," ").trim()).endsWith(IMPORTANT);return t&&(e=e.slice(0,e.length-IMPORTANT.length).trim()),{value:e,important:t}}function getActiveSelectors(e,t,r){var n=[],s=getScopesForElement(t,e);return r.forEach((function(e){return n.push(e)})),s.forEach((function(e){return n.push(e)})),sortSelectors(getSelectorsForScopes(n).filter((function(t){return matches(e,t.selector)})))}function getScopesForElement(e,t){for(var r=[];t;){var n=e.get(t);n&&r.push(n),t=t.parentElement;}return r}function getSelectorsForScopes(e){var t=[];return e.forEach((function(e){t.push.apply(t,e.selectors);})),t}function sortSelectors(e){return e.sort((function(e,t){return e.specificity===t.specificity?e.nu-t.nu:e.specificity-t.specificity})),e}function matches(e,t){return ":root"===t||"html"===t||e.matches(t)}function parseCSS(e){var t=parse(e),r=compileTemplate(e);return {original:e,template:r,selectors:getSelectors(t),usesCssVars:r.length>1}}function addGlobalStyle(e,t){if(e.some((function(e){return e.styleEl===t})))return !1;var r=parseCSS(t.textContent);return r.styleEl=t,e.push(r),!0}function updateGlobalScopes(e){var t=resolveValues(getSelectorsForScopes(e));e.forEach((function(e){e.usesCssVars&&(e.styleEl.textContent=executeTemplate(e.template,t));}));}function reScope(e,t){var r=e.template.map((function(r){return "string"==typeof r?replaceScope(r,e.scopeId,t):r})),n=e.selectors.map((function(r){return __assign(__assign({},r),{selector:replaceScope(r.selector,e.scopeId,t)})}));return __assign(__assign({},e),{template:r,selectors:n,scopeId:t})}function replaceScope(e,t,r){return e=replaceAll(e,"\\.".concat(t),".".concat(r))}function replaceAll(e,t,r){return e.replace(new RegExp(t,"g"),r)}function loadDocument(e,t){return loadDocumentStyles(e,t),loadDocumentLinks(e,t).then((function(){updateGlobalScopes(t);}))}function startWatcher(e,t){"undefined"!=typeof MutationObserver&&new MutationObserver((function(){loadDocumentStyles(e,t)&&updateGlobalScopes(t);})).observe(document.head,{childList:!0});}function loadDocumentLinks(e,t){for(var r=[],n=e.querySelectorAll('link[rel="stylesheet"][href]:not([data-no-shim])'),s=0;s<n.length;s++)r.push(addGlobalLink(e,t,n[s]));return Promise.all(r)}function loadDocumentStyles(e,t){return Array.from(e.querySelectorAll("style:not([data-styles]):not([data-no-shim])")).map((function(e){return addGlobalStyle(t,e)})).some(Boolean)}function addGlobalLink(e,t,r){var n=r.href;return fetch(n).then((function(e){return e.text()})).then((function(s){if(hasCssVariables(s)&&r.parentNode){hasRelativeUrls(s)&&(s=fixRelativeUrls(s,n));var o=e.createElement("style");o.setAttribute("data-styles",""),o.textContent=s,addGlobalStyle(t,o),r.parentNode.insertBefore(o,r),r.remove();}})).catch((function(e){console.error(e);}))}var CSS_VARIABLE_REGEXP=/[\s;{]--[-a-zA-Z0-9]+\s*:/m;function hasCssVariables(e){return e.indexOf("var(")>-1||CSS_VARIABLE_REGEXP.test(e)}var CSS_URL_REGEXP=/url[\s]*\([\s]*['"]?(?!(?:https?|data)\:|\/)([^\'\"\)]*)[\s]*['"]?\)[\s]*/gim;function hasRelativeUrls(e){return CSS_URL_REGEXP.lastIndex=0,CSS_URL_REGEXP.test(e)}function fixRelativeUrls(e,t){var r=t.replace(/[^/]*$/,"");return e.replace(CSS_URL_REGEXP,(function(e,t){var n=r+t;return e.replace(t,n)}))}var CustomStyle=function(){function e(e,t){this.win=e,this.doc=t,this.count=0,this.hostStyleMap=new WeakMap,this.hostScopeMap=new WeakMap,this.globalScopes=[],this.scopesMap=new Map,this.didInit=!1;}return e.prototype.i=function(){var e=this;return this.didInit||!this.win.requestAnimationFrame?Promise.resolve():(this.didInit=!0,new Promise((function(t){e.win.requestAnimationFrame((function(){startWatcher(e.doc,e.globalScopes),loadDocument(e.doc,e.globalScopes).then((function(){return t()}));}));})))},e.prototype.addLink=function(e){var t=this;return addGlobalLink(this.doc,this.globalScopes,e).then((function(){t.updateGlobal();}))},e.prototype.addGlobalStyle=function(e){addGlobalStyle(this.globalScopes,e)&&this.updateGlobal();},e.prototype.createHostStyle=function(e,t,r,n){if(this.hostScopeMap.has(e))throw new Error("host style already created");var s=this.registerHostTemplate(r,t,n),o=this.doc.createElement("style");return o.setAttribute("data-no-shim",""),s.usesCssVars?n?(o["s-sc"]=t="".concat(s.scopeId,"-").concat(this.count),o.textContent="/*needs update*/",this.hostStyleMap.set(e,o),this.hostScopeMap.set(e,reScope(s,t)),this.count++):(s.styleEl=o,s.usesCssVars||(o.textContent=executeTemplate(s.template,{})),this.globalScopes.push(s),this.updateGlobal(),this.hostScopeMap.set(e,s)):o.textContent=r,o},e.prototype.removeHost=function(e){var t=this.hostStyleMap.get(e);t&&t.remove(),this.hostStyleMap.delete(e),this.hostScopeMap.delete(e);},e.prototype.updateHost=function(e){var t=this.hostScopeMap.get(e);if(t&&t.usesCssVars&&t.isScoped){var r=this.hostStyleMap.get(e);if(r){var n=resolveValues(getActiveSelectors(e,this.hostScopeMap,this.globalScopes));r.textContent=executeTemplate(t.template,n);}}},e.prototype.updateGlobal=function(){updateGlobalScopes(this.globalScopes);},e.prototype.registerHostTemplate=function(e,t,r){var n=this.scopesMap.get(t);return n||((n=parseCSS(e)).scopeId=t,n.isScoped=r,this.scopesMap.set(t,n)),n},e}();!function(e){!e||e.__cssshim||e.CSS&&e.CSS.supports&&e.CSS.supports("color","var(--c)")||(e.__cssshim=new CustomStyle(e,e.document));}("undefined"!=typeof window&&window);
@@ -1,5 +1,5 @@
1
1
  /*
2
- Rindo Client Patch Browser v3.1.0 | MIT Licensed | https://rindojs.web.app
2
+ Rindo Client Patch Browser v3.2.1 | MIT Licensed | https://rindojs.web.app
3
3
  */
4
4
  (function(){
5
5
  var aa=new Set("annotation-xml color-profile font-face font-face-src font-face-uri font-face-format font-face-name missing-glyph".split(" "));function g(a){var b=aa.has(a);a=/^[a-z][.0-9_a-z]*-[\-.0-9_a-z]*$/.test(a);return !b&&a}function l(a){var b=a.isConnected;if(void 0!==b)return b;for(;a&&!(a.__CE_isImportDocument||a instanceof Document);)a=a.parentNode||(window.ShadowRoot&&a instanceof ShadowRoot?a.host:void 0);return !(!a||!(a.__CE_isImportDocument||a instanceof Document))}
@@ -19,7 +19,7 @@ let renderingRef = null;
19
19
  let queueCongestion = 0;
20
20
  let queuePending = false;
21
21
  /*
22
- Rindo Client Platform v3.1.0 | MIT Licensed | https://rindojs.web.app
22
+ Rindo Client Platform v3.2.1 | MIT Licensed | https://rindojs.web.app
23
23
  */
24
24
  import { BUILD, NAMESPACE } from '@rindo/core/internal/app-data';
25
25
  const Build = {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rindo/core/internal/client",
3
- "version": "3.1.0",
3
+ "version": "3.2.1",
4
4
  "description": "Rindo internal client platform to be imported by the Rindo Compiler and internal runtime. Breaking changes can and will happen at any time.",
5
5
  "main": "./index.js",
6
6
  "private": true,
@@ -1,5 +1,5 @@
1
1
  /*
2
- Rindo Client Patch Browser v3.1.0 | MIT Licensed | https://rindojs.web.app
2
+ Rindo Client Patch Browser v3.2.1 | MIT Licensed | https://rindojs.web.app
3
3
  */
4
4
  import { BUILD, NAMESPACE } from '@rindo/core/internal/app-data';
5
5
  import { consoleDevInfo, plt, win, doc, promiseResolve, H } from '@rindo/core';
@@ -1,5 +1,5 @@
1
1
  /*
2
- Rindo Client Patch Esm v3.1.0 | MIT Licensed | https://rindojs.web.app
2
+ Rindo Client Patch Esm v3.2.1 | MIT Licensed | https://rindojs.web.app
3
3
  */
4
4
  import { BUILD } from '@rindo/core/internal/app-data';
5
5
  import { CSS, plt, win, promiseResolve } from '@rindo/core';
@@ -1,5 +1,5 @@
1
1
  /*
2
- Rindo Client Platform v3.1.0 | MIT Licensed | https://rindojs.web.app
2
+ Rindo Client Platform v3.2.1 | MIT Licensed | https://rindojs.web.app
3
3
  */
4
4
  /**
5
5
  * @license
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rindo/core/internal/hydrate",
3
- "version": "3.1.0",
3
+ "version": "3.2.1",
4
4
  "description": "Rindo internal hydrate platform to be imported by the Rindo Compiler. Breaking changes can and will happen at any time.",
5
5
  "main": "./index.js",
6
6
  "private": true
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rindo/core/internal",
3
- "version": "3.1.0",
3
+ "version": "3.2.1",
4
4
  "description": "Rindo internals only to be imported by the Rindo Compiler. Breaking changes can and will happen at any time.",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -1,5 +1,5 @@
1
1
  import type { InMemoryFileSystem } from '../compiler/sys/in-memory-fs';
2
- import type { BuildEvents, BuildLog, BuildResultsComponentGraph, CompilerBuildResults, CompilerBuildStart, CompilerFsStats, CompilerRequestResponse, CompilerSystem, Config, CopyResults, DevServerConfig, DevServerEditor, Diagnostic, Logger, LoggerLineUpdater, LoggerTimeSpan, OptimizeCssInput, OptimizeCssOutput, OutputTargetWww, PageReloadStrategy, PrerenderConfig, StyleDoc, TaskCommand } from './rindo-public-compiler';
2
+ import type { BuildEvents, BuildLog, BuildResultsComponentGraph, CompilerBuildResults, CompilerBuildStart, CompilerFsStats, CompilerRequestResponse, CompilerSystem, Config, CopyResults, DevServerConfig, DevServerEditor, Diagnostic, Logger, LoggerLineUpdater, LoggerTimeSpan, OptimizeCssInput, OptimizeCssOutput, OutputTarget, OutputTargetWww, PageReloadStrategy, PrerenderConfig, StyleDoc, TaskCommand } from './rindo-public-compiler';
3
3
  import type { ComponentInterface, ListenOptions, ListenTargetOptions, VNode, VNodeData } from './rindo-public-runtime';
4
4
  export interface SourceMap {
5
5
  file: string;
@@ -187,6 +187,9 @@ export interface BuildCtx {
187
187
  indexBuildCount: number;
188
188
  indexDoc: Document;
189
189
  isRebuild: boolean;
190
+ /**
191
+ * A collection of Rindo's intermediate representation of components, tied to the current build
192
+ */
190
193
  moduleFiles: Module[];
191
194
  packageJson: PackageJsonData;
192
195
  pendingCopyTasks: Promise<CopyResults>[];
@@ -571,6 +574,9 @@ export interface CompilerCtx {
571
574
  hasSuccessfulBuild: boolean;
572
575
  isActivelyBuilding: boolean;
573
576
  lastBuildResults: CompilerBuildResults;
577
+ /**
578
+ * A mapping of a file path to a Rindo {@link Module}
579
+ */
574
580
  moduleMap: ModuleMap;
575
581
  nodeMap: NodeMap;
576
582
  resolvedCollections: Set<string>;
@@ -639,6 +645,13 @@ export interface ComponentCompilerFeatures {
639
645
  htmlTagNames: string[];
640
646
  htmlParts: string[];
641
647
  isUpdateable: boolean;
648
+ /**
649
+ * A plain component is one that doesn't have:
650
+ * - any members decorated with `@Prop()`, `@State()`, `@Element()`, `@Method()`
651
+ * - any methods decorated with `@Listen()`
652
+ * - any styles
653
+ * - any lifecycle methods, including `render()`
654
+ */
642
655
  isPlain: boolean;
643
656
  potentialCmpRefs: string[];
644
657
  }
@@ -709,9 +722,26 @@ export interface ComponentCompilerVirtualProperty {
709
722
  docs: string;
710
723
  }
711
724
  export type ComponentCompilerPropertyType = 'any' | 'string' | 'boolean' | 'number' | 'unknown';
725
+ /**
726
+ * Information about the type of a Rindo-implemented component property, in
727
+ * particular a `@Prop()` or `@Event()`.
728
+ */
712
729
  export interface ComponentCompilerPropertyComplexType {
730
+ /**
731
+ * The string of the original type annotation in the Rindo source code
732
+ */
713
733
  original: string;
734
+ /**
735
+ * A 'resolved' type, where e.g. imported types have been resolved and inlined
736
+ *
737
+ * For instance, an annotation like `(foo: Foo) => string;` will be
738
+ * converted to `(foo: { foo: string }) => string;`.
739
+ */
714
740
  resolved: string;
741
+ /**
742
+ * A record of the types which were referenced in the assorted type
743
+ * annotation in the original source file.
744
+ */
715
745
  references: ComponentCompilerTypeReferences;
716
746
  }
717
747
  /**
@@ -1155,18 +1185,33 @@ export interface MinifyJsResult {
1155
1185
  pos: number;
1156
1186
  };
1157
1187
  }
1188
+ /**
1189
+ * A mapping from a TypeScript or JavaScript source file path on disk, to a Rindo {@link Module}.
1190
+ *
1191
+ * It is advised that the key (path) be normalized before storing/retrieving the `Module` to avoid unnecessary lookup
1192
+ * failures.
1193
+ */
1158
1194
  export type ModuleMap = Map<string, Module>;
1159
1195
  /**
1160
1196
  * Rindo's Intermediate Representation (IR) of a module, bundling together
1161
1197
  * various pieces of information like the classes declared within it, the path
1162
1198
  * to the original source file, HTML tag names defined in the file, and so on.
1163
1199
  *
1164
- * Note that this gets serialized/parsed as JSON and therefore cannot be a
1200
+ * Note that this gets serialized/parsed as JSON and therefore cannot contain a
1165
1201
  * `Map` or a `Set`.
1166
1202
  */
1167
1203
  export interface Module {
1168
1204
  cmps: ComponentCompilerMeta[];
1205
+ /**
1206
+ * A collection of modules that a component will need. The modules in this list must have import statements generated
1207
+ * in order for the component to function.
1208
+ */
1169
1209
  coreRuntimeApis: string[];
1210
+ /**
1211
+ * A collection of modules that a component will need for a specific output target. The modules in this list must
1212
+ * have import statements generated in order for the component to function, but only for a specific output target.
1213
+ */
1214
+ outputTargetCoreRuntimeApis: Partial<Record<OutputTarget['type'], string[]>>;
1170
1215
  collectionName: string;
1171
1216
  dtsFilePath: string;
1172
1217
  excludeFromCollection: boolean;
@@ -272,8 +272,17 @@ export interface ConfigExtras {
272
272
  * loading components when using a bundler such as Wite or Parcel. Setting this flag to `true` will change how Rindo
273
273
  * lazily loads components in a way that works with additional bundlers. Setting this flag to `true` will increase
274
274
  * the size of the compiled output. Defaults to `false`.
275
+ * @deprecated This flag has been deprecated in favor of `enableImportInjection`, which provides the same
276
+ * functionality. `experimentalImportInjection` will be removed in a future major version of Rindo.
275
277
  */
276
278
  experimentalImportInjection?: boolean;
279
+ /**
280
+ * Projects that use a Rindo library built using the `dist` output target may have trouble lazily
281
+ * loading components when using a bundler such as Vite or Parcel. Setting this flag to `true` will change how Rindo
282
+ * lazily loads components in a way that works with additional bundlers. Setting this flag to `true` will increase
283
+ * the size of the compiled output. Defaults to `false`.
284
+ */
285
+ enableImportInjection?: boolean;
277
286
  /**
278
287
  * Dispatches component lifecycle events. Mainly used for testing. Defaults to `false`.
279
288
  */
@@ -1082,7 +1091,23 @@ export interface CompilerSystem {
1082
1091
  statSync(p: string): CompilerFsStats;
1083
1092
  tmpDirSync(): string;
1084
1093
  watchDirectory?(p: string, callback: CompilerFileWatcherCallback, recursive?: boolean): CompilerFileWatcher;
1085
- watchFile?(p: string, callback: CompilerFileWatcherCallback): CompilerFileWatcher;
1094
+ /**
1095
+ * A `watchFile` implementation in order to hook into the rest of the {@link CompilerSystem} implementation that is
1096
+ * used when running Rindo's compiler in "watch mode".
1097
+ *
1098
+ * It is analogous to TypeScript's `watchFile` implementation.
1099
+ *
1100
+ * Note, this function may be called for full builds of Rindo projects by the TypeScript compiler. It should not
1101
+ * assume that it will only be called in watch mode.
1102
+ *
1103
+ * This function should not perform any file watcher registration itself. Each `path` provided to it when called
1104
+ * should already have been registered as a file to watch.
1105
+ *
1106
+ * @param path the path to the file that is being watched
1107
+ * @param callback a callback to invoke when a file that is being watched has changed in some way
1108
+ * @returns an object with a method for unhooking the file watcher from the system
1109
+ */
1110
+ watchFile?(path: string, callback: CompilerFileWatcherCallback): CompilerFileWatcher;
1086
1111
  /**
1087
1112
  * How many milliseconds to wait after a change before calling watch callbacks.
1088
1113
  */
@@ -1259,7 +1284,16 @@ export interface CompilerBuildStart {
1259
1284
  buildId: number;
1260
1285
  timestamp: string;
1261
1286
  }
1287
+ /**
1288
+ * A type describing a function to call when an event is emitted by a file watcher
1289
+ * @param fileName the path of the file tied to event
1290
+ * @param eventKind a variant describing the type of event that was emitter (added, edited, etc.)
1291
+ */
1262
1292
  export type CompilerFileWatcherCallback = (fileName: string, eventKind: CompilerFileWatcherEvent) => void;
1293
+ /**
1294
+ * A type describing the different types of events that Rindo expects may happen when a file being watched is altered
1295
+ * in some way
1296
+ */
1263
1297
  export type CompilerFileWatcherEvent = CompilerEventFileAdd | CompilerEventFileDelete | CompilerEventFileUpdate | CompilerEventDirAdd | CompilerEventDirDelete;
1264
1298
  export type CompilerEventName = CompilerEventFsChange | CompilerEventFileUpdate | CompilerEventFileAdd | CompilerEventFileDelete | CompilerEventDirAdd | CompilerEventDirDelete | CompilerEventBuildStart | CompilerEventBuildFinish | CompilerEventBuildNoChange | CompilerEventBuildLog;
1265
1299
  export type CompilerEventFsChange = 'fsChange';
@@ -1862,6 +1896,12 @@ export interface OutputTargetDocsReadme extends OutputTargetBase {
1862
1896
  export interface OutputTargetDocsJson extends OutputTargetBase {
1863
1897
  type: 'docs-json';
1864
1898
  file: string;
1899
+ /**
1900
+ * Set an optional file path where Rindo should write a `d.ts` file to disk
1901
+ * at build-time containing type declarations for {@link JsonDocs} and related
1902
+ * interfaces. If this is omitted or set to `null` Rindo will not write such
1903
+ * a file.
1904
+ */
1865
1905
  typesFile?: string | null;
1866
1906
  strict?: boolean;
1867
1907
  }
@@ -1924,14 +1964,6 @@ export interface OutputTargetDistCustomElements extends OutputTargetBaseNext {
1924
1964
  */
1925
1965
  customElementsExportBehavior?: CustomElementsExportBehavior;
1926
1966
  }
1927
- export interface OutputTargetDistCustomElementsBundle extends OutputTargetBaseNext {
1928
- type: 'dist-custom-elements-bundle';
1929
- empty?: boolean;
1930
- externalRuntime?: boolean;
1931
- copy?: CopyTask[];
1932
- includeGlobalScripts?: boolean;
1933
- minify?: boolean;
1934
- }
1935
1967
  /**
1936
1968
  * The base type for output targets. All output targets should extend this base type.
1937
1969
  */
@@ -2021,7 +2053,7 @@ export interface OutputTargetWww extends OutputTargetBase {
2021
2053
  serviceWorker?: ServiceWorkerConfig | null | false;
2022
2054
  appDir?: string;
2023
2055
  }
2024
- export type OutputTarget = OutputTargetCopy | OutputTargetCustom | OutputTargetDist | OutputTargetDistCollection | OutputTargetDistCustomElements | OutputTargetDistCustomElementsBundle | OutputTargetDistLazy | OutputTargetDistGlobalStyles | OutputTargetDistLazyLoader | OutputTargetDocsJson | OutputTargetDocsCustom | OutputTargetDocsReadme | OutputTargetDocsVscode | OutputTargetWww | OutputTargetHydrate | OutputTargetStats | OutputTargetDistTypes;
2056
+ export type OutputTarget = OutputTargetCopy | OutputTargetCustom | OutputTargetDist | OutputTargetDistCollection | OutputTargetDistCustomElements | OutputTargetDistLazy | OutputTargetDistGlobalStyles | OutputTargetDistLazyLoader | OutputTargetDocsJson | OutputTargetDocsCustom | OutputTargetDocsReadme | OutputTargetDocsVscode | OutputTargetWww | OutputTargetHydrate | OutputTargetStats | OutputTargetDistTypes;
2025
2057
  export interface ServiceWorkerConfig {
2026
2058
  unregister?: boolean;
2027
2059
  swDest?: string;
@@ -2180,9 +2212,17 @@ export interface LazyRequire {
2180
2212
  require(fromDir: string, moduleId: string): any;
2181
2213
  getModulePath(fromDir: string, moduleId: string): string;
2182
2214
  }
2215
+ /**
2216
+ * @deprecated This interface is no longer used by Rindo
2217
+ * TODO: Remove this interface
2218
+ */
2183
2219
  export interface FsWatcherItem {
2184
2220
  close(): void;
2185
2221
  }
2222
+ /**
2223
+ * @deprecated This interface is no longer used by Rindo
2224
+ * TODO: Remove this interface
2225
+ */
2186
2226
  export interface MakeDirectoryOptions {
2187
2227
  /**
2188
2228
  * Indicates whether parent folders should be created.
@@ -2195,6 +2235,10 @@ export interface MakeDirectoryOptions {
2195
2235
  */
2196
2236
  mode?: number;
2197
2237
  }
2238
+ /**
2239
+ * @deprecated This interface is no longer used by Rindo
2240
+ * TODO: Remove this interface
2241
+ */
2198
2242
  export interface FsStats {
2199
2243
  isFile(): boolean;
2200
2244
  isDirectory(): boolean;
@@ -93,7 +93,11 @@ function stopAutoApplyChanges() {
93
93
  isAutoApplyingChanges = !1, autoApplyTimer && (clearTimeout(autoApplyTimer), autoApplyTimer = void 0);
94
94
  }
95
95
 
96
- const mockDoc = require("@rindo/core/mock-doc"), appData = require("@rindo/core/internal/app-data"), styles = new Map, modeResolutionChain = [], cstrs = new Map, queuedTicks = [], queuedWriteTasks = [], queuedReadTasks = [], moduleLoaded = new Map, queuedLoadModules = [], caughtErrors = [], hostRefs = new Map, getAssetPath = e => {
96
+ const mockDoc = require("@rindo/core/mock-doc"), appData = require("@rindo/core/internal/app-data");
97
+
98
+ require("path");
99
+
100
+ const styles = new Map, modeResolutionChain = [], cstrs = new Map, queuedTicks = [], queuedWriteTasks = [], queuedReadTasks = [], moduleLoaded = new Map, queuedLoadModules = [], caughtErrors = [], hostRefs = new Map, getAssetPath = e => {
97
101
  const t = new URL(e, plt.$resourcesUrl$);
98
102
  return t.origin !== win.location.origin ? t.href : t.pathname;
99
103
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rindo/core/internal/testing",
3
- "version": "3.1.0",
3
+ "version": "3.2.1",
4
4
  "description": "Rindo internal testing platform to be imported by the Rindo Compiler. Breaking changes can and will happen at any time.",
5
5
  "main": "./index.js",
6
6
  "private": true
@@ -1,5 +1,5 @@
1
1
  /*!
2
- Rindo Mock Doc (CommonJS) v3.1.0 | MIT Licensed | https://rindojs.web.app
2
+ Rindo Mock Doc (CommonJS) v3.2.1 | MIT Licensed | https://rindojs.web.app
3
3
  */
4
4
  var mockDoc = (function(exports) {
5
5
  'use strict';
@@ -3997,9 +3997,14 @@ class MockWindow {
3997
3997
  this.__location = val;
3998
3998
  }
3999
3999
  }
4000
- matchMedia() {
4000
+ matchMedia(media) {
4001
4001
  return {
4002
+ media,
4002
4003
  matches: false,
4004
+ addEventListener,
4005
+ dispatchEvent,
4006
+ removeEventListener,
4007
+ onchange: null,
4003
4008
  };
4004
4009
  }
4005
4010
  get Node() {
@@ -890,8 +890,13 @@ declare class MockWindow {
890
890
  set localStorage(locStorage: MockStorage);
891
891
  get location(): MockLocation;
892
892
  set location(val: Location | string);
893
- matchMedia(): {
893
+ matchMedia(media: string): {
894
+ media: string;
894
895
  matches: boolean;
896
+ addEventListener: typeof addEventListener;
897
+ dispatchEvent: typeof dispatchEvent;
898
+ removeEventListener: typeof removeEventListener;
899
+ onchange: (this: MediaQueryList, ev: MediaQueryListEvent) => any;
895
900
  };
896
901
  get Node(): any;
897
902
  get NodeList(): any;
package/mock-doc/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- Rindo Mock Doc v3.1.0 | MIT Licensed | https://rindojs.web.app
2
+ Rindo Mock Doc v3.2.1 | MIT Licensed | https://rindojs.web.app
3
3
  */
4
4
  const CONTENT_REF_ID = 'r';
5
5
  const ORG_LOCATION_ID = 'o';
@@ -3994,9 +3994,14 @@ class MockWindow {
3994
3994
  this.__location = val;
3995
3995
  }
3996
3996
  }
3997
- matchMedia() {
3997
+ matchMedia(media) {
3998
3998
  return {
3999
+ media,
3999
4000
  matches: false,
4001
+ addEventListener,
4002
+ dispatchEvent,
4003
+ removeEventListener,
4004
+ onchange: null,
4000
4005
  };
4001
4006
  }
4002
4007
  get Node() {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rindo/core/mock-doc",
3
- "version": "3.1.0",
3
+ "version": "3.2.1",
4
4
  "description": "Mock window, document and DOM outside of a browser environment.",
5
5
  "main": "./index.cjs",
6
6
  "module": "./index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rindo/core",
3
- "version": "3.1.0",
3
+ "version": "3.2.1",
4
4
  "license": "MIT",
5
5
  "main": "./internal/rindo-core/index.cjs",
6
6
  "module": "./internal/rindo-core/index.js",
@@ -91,12 +91,12 @@
91
91
  "jest-cli": "^27.4.5",
92
92
  "jest-environment-node": "^27.4.4",
93
93
  "listr": "^0.14.3",
94
- "magic-string": "^0.29.0",
94
+ "magic-string": "^0.30.0",
95
95
  "merge-source-map": "^1.1.0",
96
96
  "mime-db": "^1.46.0",
97
97
  "minimatch": "5.1.2",
98
98
  "node-fetch": "2.6.7",
99
- "open": "^8.4.0",
99
+ "open": "^9.0.0",
100
100
  "open-in-editor": "2.2.0",
101
101
  "parse5": "7.1.2",
102
102
  "path-browserify": "^1.0.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rindo/core/screenshot",
3
- "version": "3.1.0",
3
+ "version": "3.2.1",
4
4
  "description": "Rindo Screenshot.",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",