Add Spa.load_detached_action, decorator identifier rule, npm updates
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,210 @@
|
||||
<?php
|
||||
|
||||
namespace App\RSpade\CodeQuality\Rules\JavaScript;
|
||||
|
||||
use App\RSpade\CodeQuality\Rules\CodeQualityRule_Abstract;
|
||||
|
||||
/**
|
||||
* DecoratorIdentifierParamRule - Prohibits identifier (class name) parameters in decorators
|
||||
*
|
||||
* JavaScript decorators cannot reliably use class name references as parameters because
|
||||
* the framework cannot guarantee class definition order in the compiled bundle output.
|
||||
* Class ordering is based on extends hierarchies and other factors, but decorator
|
||||
* parameter dependencies are not tracked.
|
||||
*
|
||||
* Use string literals instead of class references in decorator parameters.
|
||||
*/
|
||||
class DecoratorIdentifierParam_CodeQualityRule extends CodeQualityRule_Abstract
|
||||
{
|
||||
/**
|
||||
* Get the unique rule identifier
|
||||
*/
|
||||
public function get_id(): string
|
||||
{
|
||||
return 'JS-DECORATOR-IDENT-01';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get human-readable rule name
|
||||
*/
|
||||
public function get_name(): string
|
||||
{
|
||||
return 'Decorator Identifier Parameter';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get rule description
|
||||
*/
|
||||
public function get_description(): string
|
||||
{
|
||||
return 'Prohibits identifier (class name) references as decorator parameters - use string literals instead';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get file patterns this rule applies to
|
||||
*/
|
||||
public function get_file_patterns(): array
|
||||
{
|
||||
return ['*.js'];
|
||||
}
|
||||
|
||||
/**
|
||||
* This rule runs during manifest scan to catch issues early
|
||||
*/
|
||||
public function is_called_during_manifest_scan(): bool
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check the manifest for decorator identifier parameter violations
|
||||
*/
|
||||
public function check(string $file_path, string $contents, array $metadata = []): void
|
||||
{
|
||||
static $already_checked = false;
|
||||
|
||||
// Only check once per manifest build
|
||||
if ($already_checked) {
|
||||
return;
|
||||
}
|
||||
$already_checked = true;
|
||||
|
||||
// Get all manifest files
|
||||
$files = \App\RSpade\Core\Manifest\Manifest::get_all();
|
||||
if (empty($files)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check all JavaScript files with decorators
|
||||
foreach ($files as $file => $file_metadata) {
|
||||
// Skip if not a JavaScript file
|
||||
if (($file_metadata['extension'] ?? '') !== 'js') {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Skip if no class (non-class JS files)
|
||||
if (!isset($file_metadata['class'])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check class-level decorators
|
||||
if (!empty($file_metadata['decorators'])) {
|
||||
$this->check_decorators($file, $file_metadata['class'], $file_metadata['decorators'], 'class');
|
||||
}
|
||||
|
||||
// Check method-level decorators
|
||||
// Method decorators are stored under each method in public_static_methods and public_instance_methods
|
||||
$all_methods = array_merge(
|
||||
$file_metadata['public_static_methods'] ?? [],
|
||||
$file_metadata['public_instance_methods'] ?? []
|
||||
);
|
||||
|
||||
foreach ($all_methods as $method_name => $method_info) {
|
||||
if (!empty($method_info['decorators'])) {
|
||||
$this->check_decorators(
|
||||
$file,
|
||||
$file_metadata['class'],
|
||||
$method_info['decorators'],
|
||||
'method',
|
||||
$method_name,
|
||||
$method_info['line'] ?? 1
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check a set of decorators for identifier parameters
|
||||
*
|
||||
* @param string $file File path
|
||||
* @param string $class_name Class name for context
|
||||
* @param array $decorators Decorators in compact format: [[name, [args]], ...]
|
||||
* @param string $context 'class' or 'method'
|
||||
* @param string|null $method_name Method name if context is 'method'
|
||||
* @param int $line Line number
|
||||
*/
|
||||
private function check_decorators(
|
||||
string $file,
|
||||
string $class_name,
|
||||
array $decorators,
|
||||
string $context,
|
||||
?string $method_name = null,
|
||||
int $line = 1
|
||||
): void {
|
||||
foreach ($decorators as $decorator) {
|
||||
$decorator_name = $decorator[0] ?? 'unknown';
|
||||
$decorator_args = $decorator[1] ?? [];
|
||||
|
||||
// Check each argument for identifier usage
|
||||
$this->check_args_for_identifiers(
|
||||
$file,
|
||||
$class_name,
|
||||
$decorator_name,
|
||||
$decorator_args,
|
||||
$context,
|
||||
$method_name,
|
||||
$line
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Recursively check decorator arguments for identifier values
|
||||
*/
|
||||
private function check_args_for_identifiers(
|
||||
string $file,
|
||||
string $class_name,
|
||||
string $decorator_name,
|
||||
array $args,
|
||||
string $context,
|
||||
?string $method_name,
|
||||
int $line,
|
||||
string $path = ''
|
||||
): void {
|
||||
foreach ($args as $index => $arg) {
|
||||
$current_path = $path ? "{$path}[{$index}]" : "argument {$index}";
|
||||
|
||||
// Check if this argument is an identifier
|
||||
if (is_array($arg) && isset($arg['identifier'])) {
|
||||
$identifier = $arg['identifier'];
|
||||
|
||||
// Build context description
|
||||
if ($context === 'class') {
|
||||
$location = "class '{$class_name}'";
|
||||
} else {
|
||||
$location = "method '{$class_name}::{$method_name}()'";
|
||||
}
|
||||
|
||||
$this->add_violation(
|
||||
$file,
|
||||
$line,
|
||||
"Decorator @{$decorator_name} on {$location} uses identifier '{$identifier}' as a parameter. " .
|
||||
"Class name references are not allowed in decorator parameters because the framework cannot " .
|
||||
"guarantee the referenced class will be defined before this decorator is evaluated.",
|
||||
"@{$decorator_name}(...{$identifier}...)",
|
||||
"Use a string literal instead of the class reference:\n" .
|
||||
" - Change: @{$decorator_name}({$identifier})\n" .
|
||||
" - To: @{$decorator_name}('{$identifier}')\n\n" .
|
||||
"If you need the actual class at runtime, resolve it from the string:\n" .
|
||||
" const cls = Manifest.get_class_by_name('{$identifier}');",
|
||||
'critical'
|
||||
);
|
||||
}
|
||||
|
||||
// Recursively check nested arrays
|
||||
if (is_array($arg) && !isset($arg['identifier'])) {
|
||||
$this->check_args_for_identifiers(
|
||||
$file,
|
||||
$class_name,
|
||||
$decorator_name,
|
||||
$arg,
|
||||
$context,
|
||||
$method_name,
|
||||
$line,
|
||||
$current_path
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -941,4 +941,75 @@ class Spa {
|
||||
static spa_unknown_route_fatal(path) {
|
||||
console.error(`Unknown route for path ${path} - this shouldn't happen`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load an action in detached mode without affecting the live SPA state
|
||||
*
|
||||
* This method resolves a URL to an action, instantiates it on a detached DOM element
|
||||
* (not in the actual document), runs its full lifecycle including on_load(), and
|
||||
* returns the fully-initialized component instance.
|
||||
*
|
||||
* Use cases:
|
||||
* - Getting action metadata (title, breadcrumbs) for navigation UI
|
||||
* - Pre-fetching action data before navigation
|
||||
* - Inspecting action state without displaying it
|
||||
*
|
||||
* IMPORTANT: The caller is responsible for calling action.stop() when done
|
||||
* to prevent memory leaks. The detached action holds references and may have
|
||||
* event listeners that need cleanup.
|
||||
*
|
||||
* @param {string} url - The URL to resolve and load
|
||||
* @param {object} extra_args - Optional extra parameters to pass to the action component.
|
||||
* These are merged with URL-extracted args (extra_args take precedence).
|
||||
* Pass {use_cached_data: true} to have the action load with cached data
|
||||
* without revalidation if cached data is available.
|
||||
* @returns {Promise<Spa_Action|null>} The fully-loaded action instance, or null if route not found
|
||||
*
|
||||
* @example
|
||||
* // Basic usage
|
||||
* const action = await Spa.load_detached_action('/contacts/123');
|
||||
* if (action) {
|
||||
* const title = action.get_title?.() ?? action.constructor.name;
|
||||
* console.log('Page title:', title);
|
||||
* action.stop(); // Clean up when done
|
||||
* }
|
||||
*
|
||||
* @example
|
||||
* // With cached data (faster, no network request if cached)
|
||||
* const action = await Spa.load_detached_action('/contacts/123', {use_cached_data: true});
|
||||
*/
|
||||
static async load_detached_action(url, extra_args = {}) {
|
||||
// Parse URL and match to route
|
||||
const parsed = Spa.parse_url(url);
|
||||
const url_without_hash = parsed.path + parsed.search;
|
||||
const route_match = Spa.match_url_to_route(url_without_hash);
|
||||
|
||||
if (!route_match) {
|
||||
console_debug('Spa', 'load_detached_action: No route match for ' + url);
|
||||
return null;
|
||||
}
|
||||
|
||||
const action_class = route_match.action_class;
|
||||
const action_name = action_class.name;
|
||||
|
||||
// Merge URL args with extra_args (extra_args take precedence)
|
||||
const args = { ...route_match.args, ...extra_args };
|
||||
|
||||
console_debug('Spa', `load_detached_action: Loading ${action_name} with args:`, args);
|
||||
|
||||
// Create a detached container (not in DOM)
|
||||
const $detached = $('<div>');
|
||||
|
||||
// Instantiate the action on the detached element
|
||||
// This triggers the full component lifecycle: on_create -> render -> on_render -> on_load -> on_ready
|
||||
$detached.component(action_name, args);
|
||||
const action = $detached.component();
|
||||
|
||||
// Wait for the action to be fully ready (including on_load completion)
|
||||
await action.ready();
|
||||
|
||||
console_debug('Spa', `load_detached_action: ${action_name} ready`);
|
||||
|
||||
return action;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1026,6 +1026,30 @@ Unhandled errors auto-show flash alert.
|
||||
|
||||
---
|
||||
|
||||
## DATA FETCHING (CRITICAL)
|
||||
|
||||
**DEFAULT**: Use `Model.fetch(id)` for all single-record retrieval from JavaScript.
|
||||
|
||||
```javascript
|
||||
const user = await User_Model.fetch(1); // Throws if not found
|
||||
const user = await User_Model.fetch_or_null(1); // Returns null if not found
|
||||
```
|
||||
|
||||
Requires `#[Ajax_Endpoint_Model_Fetch]` on the model's `fetch()` method.
|
||||
|
||||
Auto-populates enum properties and enables lazy relationship loading.
|
||||
|
||||
**If model not available in JS bundle**: STOP and ask the developer. Bundles should include all models they need (`rsx/models` in include paths). Do not create workaround endpoints without approval.
|
||||
|
||||
**Custom Ajax endpoints require developer approval** and are only for:
|
||||
- Aggregations, batch operations, or complex result sets
|
||||
- System/root-only models intentionally excluded from bundle
|
||||
- Queries beyond simple ID lookup
|
||||
|
||||
Details: `php artisan rsx:man model_fetch`
|
||||
|
||||
---
|
||||
|
||||
## BROWSER STORAGE
|
||||
|
||||
**Rsx_Storage** - Scoped sessionStorage/localStorage with automatic fallback and quota management. All keys automatically scoped by session, user, site, and build. Gracefully handles unavailable storage and quota exceeded errors. Storage is volatile - use only for non-critical data (caching, UI state, transient messages).
|
||||
|
||||
30
node_modules/.package-lock.json
generated
vendored
30
node_modules/.package-lock.json
generated
vendored
@@ -2211,9 +2211,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jqhtml/core": {
|
||||
"version": "2.3.13",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/core/-/core-2.3.13.tgz",
|
||||
"integrity": "sha512-EZiMkfRj0c9r4f2S8fcxNYRMd5FWorkUz5D8p5cKRUa0d6IhAJov3NzKgooHAg52TN6xupWo0bB+jNFQxd6v0w==",
|
||||
"version": "2.3.14",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/core/-/core-2.3.14.tgz",
|
||||
"integrity": "sha512-hJkCDrFhE1RnCCu0dG2wl+DqOzOZ92TRz93VlVjkgX+wu6muM0knbM5lsLnK9LD6n6nT13u5pvQEl1DVQVQRLg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@rollup/plugin-node-resolve": "^16.0.1",
|
||||
@@ -2237,9 +2237,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jqhtml/parser": {
|
||||
"version": "2.3.13",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/parser/-/parser-2.3.13.tgz",
|
||||
"integrity": "sha512-zzFL0thym8aCx/WQshiYXRipwU09MR1YCLAZMGnZeez+CVEbgymlBH0lsjVexHlHfXOgr31sXGLoJo197WvlTg==",
|
||||
"version": "2.3.14",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/parser/-/parser-2.3.14.tgz",
|
||||
"integrity": "sha512-WMpYG1pagvopbLg2dUAc94C62oiyQ2rPhAl4lPcCxL6VDOFeeCBzjdqx/40oie551y/yiCcrd2nr3YeXDh2bnw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/jest": "^29.5.11",
|
||||
@@ -2277,9 +2277,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jqhtml/vscode-extension": {
|
||||
"version": "2.3.13",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/vscode-extension/-/vscode-extension-2.3.13.tgz",
|
||||
"integrity": "sha512-EMJkTBovxvPso/p5WToJUiOp1dPFirdbsV+rVuhCMcu8LhbAQsGxiRNm5gYOVEHnlMpFA2eoUX7l5d9C3ySo0A==",
|
||||
"version": "2.3.14",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/vscode-extension/-/vscode-extension-2.3.14.tgz",
|
||||
"integrity": "sha512-I0Z83JBB3b2RQYs/KQ8FNTpuvsvgH15MvByMvEsffGRCnEr3ehX4BCxWizjaIrpqPzakQjIZQSe1KW9mNbmGfw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"vscode": "^1.74.0"
|
||||
@@ -3997,9 +3997,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/baseline-browser-mapping": {
|
||||
"version": "2.9.5",
|
||||
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.5.tgz",
|
||||
"integrity": "sha512-D5vIoztZOq1XM54LUdttJVc96ggEsIfju2JBvht06pSzpckp3C7HReun67Bghzrtdsq9XdMGbSSB3v3GhMNmAA==",
|
||||
"version": "2.9.6",
|
||||
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.6.tgz",
|
||||
"integrity": "sha512-v9BVVpOTLB59C9E7aSnmIF8h7qRsFpx+A2nugVMTszEOMcfjlZMsXRm4LF23I3Z9AJxc8ANpIvzbzONoX9VJlg==",
|
||||
"license": "Apache-2.0",
|
||||
"bin": {
|
||||
"baseline-browser-mapping": "dist/cli.js"
|
||||
@@ -10795,9 +10795,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/sass": {
|
||||
"version": "1.95.0",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.95.0.tgz",
|
||||
"integrity": "sha512-9QMjhLq+UkOg/4bb8Lt8A+hJZvY3t+9xeZMKSBtBEgxrXA3ed5Ts4NDreUkYgJP1BTmrscQE/xYhf7iShow6lw==",
|
||||
"version": "1.95.1",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.95.1.tgz",
|
||||
"integrity": "sha512-uPoDh5NIEZV4Dp5GBodkmNY9tSQfXY02pmCcUo+FR1P+x953HGkpw+vV28D4IqYB6f8webZtwoSaZaiPtpTeMg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"chokidar": "^4.0.0",
|
||||
|
||||
1
node_modules/@jqhtml/core/dist/component.d.ts
generated
vendored
1
node_modules/@jqhtml/core/dist/component.d.ts
generated
vendored
@@ -50,6 +50,7 @@ export declare class Jqhtml_Component {
|
||||
private _should_cache_html_after_ready;
|
||||
private _is_dynamic;
|
||||
private _on_render_complete;
|
||||
private _use_cached_data_hit;
|
||||
constructor(element?: any, args?: Record<string, any>);
|
||||
/**
|
||||
* Protect lifecycle methods from manual invocation
|
||||
|
||||
2
node_modules/@jqhtml/core/dist/component.d.ts.map
generated
vendored
2
node_modules/@jqhtml/core/dist/component.d.ts.map
generated
vendored
@@ -1 +1 @@
|
||||
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../src/component.ts"],"names":[],"mappings":"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"}
|
||||
45
node_modules/@jqhtml/core/dist/index.cjs
generated
vendored
45
node_modules/@jqhtml/core/dist/index.cjs
generated
vendored
@@ -567,7 +567,14 @@ function process_tag_to_html(instruction, html, tagElements, components, context
|
||||
* Process a component instruction to HTML
|
||||
*/
|
||||
function process_component_to_html(instruction, html, components, context) {
|
||||
const [componentName, props, contentOrSlots] = instruction.comp;
|
||||
const [componentName, originalProps, contentOrSlots] = instruction.comp;
|
||||
// Propagate use_cached_data from parent to child if parent has it set
|
||||
// This allows a parent component with use_cached_data=true to automatically
|
||||
// pass this behavior to all child components rendered in its template
|
||||
let props = originalProps;
|
||||
if (context.args?.use_cached_data === true && props.use_cached_data === undefined) {
|
||||
props = { ...originalProps, use_cached_data: true };
|
||||
}
|
||||
// Determine if third parameter is a function (default content) or object (named slots)
|
||||
let contentFn;
|
||||
let slots;
|
||||
@@ -1135,6 +1142,8 @@ class Jqhtml_Component {
|
||||
this._is_dynamic = false; // True if this.data changed during on_load() (used for HTML cache sync)
|
||||
// on_render synchronization (HTML cache mode)
|
||||
this._on_render_complete = false; // True after on_render() has been called post-on_load
|
||||
// use_cached_data feature - skip on_load() when cache hit occurs
|
||||
this._use_cached_data_hit = false; // True if use_cached_data=true AND cache was used
|
||||
this._cid = this._generate_cid();
|
||||
this._lifecycle_manager = LifecycleManager.get_instance();
|
||||
// Create or wrap element
|
||||
@@ -1729,6 +1738,12 @@ class Jqhtml_Component {
|
||||
console.log(`[Cache html] Component ${this._cid} (${this.component_name()}) cache miss`, { cache_key: html_cache_key });
|
||||
}
|
||||
}
|
||||
// Warn if use_cached_data is set in html cache mode - it has no effect
|
||||
if (this.args.use_cached_data === true) {
|
||||
console.warn(`[JQHTML] Component "${this.component_name()}" has use_cached_data=true but cache mode is 'html'.\n` +
|
||||
`use_cached_data only applies to 'data' cache mode. In 'html' mode, the entire rendered HTML is cached.\n` +
|
||||
`The use_cached_data flag will be ignored.`);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Data cache mode (default) - check for cached data to hydrate this.data
|
||||
@@ -1736,8 +1751,17 @@ class Jqhtml_Component {
|
||||
if (cached_data !== null && typeof cached_data === 'object') {
|
||||
// Hydrate this.data with cached data
|
||||
this.data = cached_data;
|
||||
if (window.jqhtml?.debug?.verbose) {
|
||||
console.log(`[Cache data] Component ${this._cid} (${this.component_name()}) hydrated from cache`, { cache_key, data: cached_data });
|
||||
// If use_cached_data=true, skip on_load() entirely - use cached data as final data
|
||||
if (this.args.use_cached_data === true) {
|
||||
this._use_cached_data_hit = true;
|
||||
if (window.jqhtml?.debug?.verbose) {
|
||||
console.log(`[Cache data] Component ${this._cid} (${this.component_name()}) using cached data (use_cached_data=true, skipping on_load)`, { cache_key, data: cached_data });
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (window.jqhtml?.debug?.verbose) {
|
||||
console.log(`[Cache data] Component ${this._cid} (${this.component_name()}) hydrated from cache`, { cache_key, data: cached_data });
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -1768,6 +1792,15 @@ class Jqhtml_Component {
|
||||
if (this._stopped || this._ready_state >= 2)
|
||||
return;
|
||||
this._log_lifecycle('load', 'start');
|
||||
// use_cached_data feature: If cache hit occurred and use_cached_data=true, skip on_load() entirely
|
||||
// The cached data is already in this.data from create() phase
|
||||
if (this._use_cached_data_hit) {
|
||||
this._ready_state = 2;
|
||||
this._update_debug_attrs();
|
||||
this._log_lifecycle('load', 'complete (use_cached_data - skipped on_load)');
|
||||
this.trigger('load');
|
||||
return;
|
||||
}
|
||||
// Restore this.data to initial state from snapshot (skip on first load)
|
||||
// This ensures on_load() always starts with clean state
|
||||
const is_first_load = this._ready_state < 2;
|
||||
@@ -4451,6 +4484,10 @@ class Load_Coordinator {
|
||||
if (key.startsWith('_')) {
|
||||
continue; // Skip internal properties
|
||||
}
|
||||
// Skip framework properties that shouldn't affect cache identity
|
||||
if (key === 'use_cached_data') {
|
||||
continue;
|
||||
}
|
||||
const value = args[key];
|
||||
const value_type = typeof value;
|
||||
// Handle primitives (string, number, boolean, null, undefined)
|
||||
@@ -4667,7 +4704,7 @@ function init(jQuery) {
|
||||
}
|
||||
}
|
||||
// Version - will be replaced during build with actual version from package.json
|
||||
const version = '2.3.13';
|
||||
const version = '2.3.14';
|
||||
// Default export with all functionality
|
||||
const jqhtml = {
|
||||
// Core
|
||||
|
||||
2
node_modules/@jqhtml/core/dist/index.cjs.map
generated
vendored
2
node_modules/@jqhtml/core/dist/index.cjs.map
generated
vendored
File diff suppressed because one or more lines are too long
45
node_modules/@jqhtml/core/dist/index.js
generated
vendored
45
node_modules/@jqhtml/core/dist/index.js
generated
vendored
@@ -563,7 +563,14 @@ function process_tag_to_html(instruction, html, tagElements, components, context
|
||||
* Process a component instruction to HTML
|
||||
*/
|
||||
function process_component_to_html(instruction, html, components, context) {
|
||||
const [componentName, props, contentOrSlots] = instruction.comp;
|
||||
const [componentName, originalProps, contentOrSlots] = instruction.comp;
|
||||
// Propagate use_cached_data from parent to child if parent has it set
|
||||
// This allows a parent component with use_cached_data=true to automatically
|
||||
// pass this behavior to all child components rendered in its template
|
||||
let props = originalProps;
|
||||
if (context.args?.use_cached_data === true && props.use_cached_data === undefined) {
|
||||
props = { ...originalProps, use_cached_data: true };
|
||||
}
|
||||
// Determine if third parameter is a function (default content) or object (named slots)
|
||||
let contentFn;
|
||||
let slots;
|
||||
@@ -1131,6 +1138,8 @@ class Jqhtml_Component {
|
||||
this._is_dynamic = false; // True if this.data changed during on_load() (used for HTML cache sync)
|
||||
// on_render synchronization (HTML cache mode)
|
||||
this._on_render_complete = false; // True after on_render() has been called post-on_load
|
||||
// use_cached_data feature - skip on_load() when cache hit occurs
|
||||
this._use_cached_data_hit = false; // True if use_cached_data=true AND cache was used
|
||||
this._cid = this._generate_cid();
|
||||
this._lifecycle_manager = LifecycleManager.get_instance();
|
||||
// Create or wrap element
|
||||
@@ -1725,6 +1734,12 @@ class Jqhtml_Component {
|
||||
console.log(`[Cache html] Component ${this._cid} (${this.component_name()}) cache miss`, { cache_key: html_cache_key });
|
||||
}
|
||||
}
|
||||
// Warn if use_cached_data is set in html cache mode - it has no effect
|
||||
if (this.args.use_cached_data === true) {
|
||||
console.warn(`[JQHTML] Component "${this.component_name()}" has use_cached_data=true but cache mode is 'html'.\n` +
|
||||
`use_cached_data only applies to 'data' cache mode. In 'html' mode, the entire rendered HTML is cached.\n` +
|
||||
`The use_cached_data flag will be ignored.`);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Data cache mode (default) - check for cached data to hydrate this.data
|
||||
@@ -1732,8 +1747,17 @@ class Jqhtml_Component {
|
||||
if (cached_data !== null && typeof cached_data === 'object') {
|
||||
// Hydrate this.data with cached data
|
||||
this.data = cached_data;
|
||||
if (window.jqhtml?.debug?.verbose) {
|
||||
console.log(`[Cache data] Component ${this._cid} (${this.component_name()}) hydrated from cache`, { cache_key, data: cached_data });
|
||||
// If use_cached_data=true, skip on_load() entirely - use cached data as final data
|
||||
if (this.args.use_cached_data === true) {
|
||||
this._use_cached_data_hit = true;
|
||||
if (window.jqhtml?.debug?.verbose) {
|
||||
console.log(`[Cache data] Component ${this._cid} (${this.component_name()}) using cached data (use_cached_data=true, skipping on_load)`, { cache_key, data: cached_data });
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (window.jqhtml?.debug?.verbose) {
|
||||
console.log(`[Cache data] Component ${this._cid} (${this.component_name()}) hydrated from cache`, { cache_key, data: cached_data });
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -1764,6 +1788,15 @@ class Jqhtml_Component {
|
||||
if (this._stopped || this._ready_state >= 2)
|
||||
return;
|
||||
this._log_lifecycle('load', 'start');
|
||||
// use_cached_data feature: If cache hit occurred and use_cached_data=true, skip on_load() entirely
|
||||
// The cached data is already in this.data from create() phase
|
||||
if (this._use_cached_data_hit) {
|
||||
this._ready_state = 2;
|
||||
this._update_debug_attrs();
|
||||
this._log_lifecycle('load', 'complete (use_cached_data - skipped on_load)');
|
||||
this.trigger('load');
|
||||
return;
|
||||
}
|
||||
// Restore this.data to initial state from snapshot (skip on first load)
|
||||
// This ensures on_load() always starts with clean state
|
||||
const is_first_load = this._ready_state < 2;
|
||||
@@ -4447,6 +4480,10 @@ class Load_Coordinator {
|
||||
if (key.startsWith('_')) {
|
||||
continue; // Skip internal properties
|
||||
}
|
||||
// Skip framework properties that shouldn't affect cache identity
|
||||
if (key === 'use_cached_data') {
|
||||
continue;
|
||||
}
|
||||
const value = args[key];
|
||||
const value_type = typeof value;
|
||||
// Handle primitives (string, number, boolean, null, undefined)
|
||||
@@ -4663,7 +4700,7 @@ function init(jQuery) {
|
||||
}
|
||||
}
|
||||
// Version - will be replaced during build with actual version from package.json
|
||||
const version = '2.3.13';
|
||||
const version = '2.3.14';
|
||||
// Default export with all functionality
|
||||
const jqhtml = {
|
||||
// Core
|
||||
|
||||
2
node_modules/@jqhtml/core/dist/index.js.map
generated
vendored
2
node_modules/@jqhtml/core/dist/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
2
node_modules/@jqhtml/core/dist/instruction-processor.d.ts.map
generated
vendored
2
node_modules/@jqhtml/core/dist/instruction-processor.d.ts.map
generated
vendored
@@ -1 +1 @@
|
||||
{"version":3,"file":"instruction-processor.d.ts","sourceRoot":"","sources":["../src/instruction-processor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIlD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAClL;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;CAClF;AAED,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,iBAAiB,GAAG,oBAAoB,GAAG,eAAe,GAAG,MAAM,CAAC;AAqB/G,wBAAgB,GAAG,IAAI,MAAM,CA2C5B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,WAAW,EAAE,EAC3B,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,gBAAgB,EACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GACtC,IAAI,CAwCN;AA8cD;;GAEG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAW1F"}
|
||||
{"version":3,"file":"instruction-processor.d.ts","sourceRoot":"","sources":["../src/instruction-processor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIlD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAClL;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;CAClF;AAED,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,iBAAiB,GAAG,oBAAoB,GAAG,eAAe,GAAG,MAAM,CAAC;AAqB/G,wBAAgB,GAAG,IAAI,MAAM,CA2C5B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,WAAW,EAAE,EAC3B,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,gBAAgB,EACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GACtC,IAAI,CAwCN;AAsdD;;GAEG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAW1F"}
|
||||
47
node_modules/@jqhtml/core/dist/jqhtml-core.esm.js
generated
vendored
47
node_modules/@jqhtml/core/dist/jqhtml-core.esm.js
generated
vendored
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* JQHTML Core v2.3.13
|
||||
* JQHTML Core v2.3.14
|
||||
* (c) 2025 JQHTML Team
|
||||
* Released under the MIT License
|
||||
*/
|
||||
@@ -568,7 +568,14 @@ function process_tag_to_html(instruction, html, tagElements, components, context
|
||||
* Process a component instruction to HTML
|
||||
*/
|
||||
function process_component_to_html(instruction, html, components, context) {
|
||||
const [componentName, props, contentOrSlots] = instruction.comp;
|
||||
const [componentName, originalProps, contentOrSlots] = instruction.comp;
|
||||
// Propagate use_cached_data from parent to child if parent has it set
|
||||
// This allows a parent component with use_cached_data=true to automatically
|
||||
// pass this behavior to all child components rendered in its template
|
||||
let props = originalProps;
|
||||
if (context.args?.use_cached_data === true && props.use_cached_data === undefined) {
|
||||
props = { ...originalProps, use_cached_data: true };
|
||||
}
|
||||
// Determine if third parameter is a function (default content) or object (named slots)
|
||||
let contentFn;
|
||||
let slots;
|
||||
@@ -1136,6 +1143,8 @@ class Jqhtml_Component {
|
||||
this._is_dynamic = false; // True if this.data changed during on_load() (used for HTML cache sync)
|
||||
// on_render synchronization (HTML cache mode)
|
||||
this._on_render_complete = false; // True after on_render() has been called post-on_load
|
||||
// use_cached_data feature - skip on_load() when cache hit occurs
|
||||
this._use_cached_data_hit = false; // True if use_cached_data=true AND cache was used
|
||||
this._cid = this._generate_cid();
|
||||
this._lifecycle_manager = LifecycleManager.get_instance();
|
||||
// Create or wrap element
|
||||
@@ -1730,6 +1739,12 @@ class Jqhtml_Component {
|
||||
console.log(`[Cache html] Component ${this._cid} (${this.component_name()}) cache miss`, { cache_key: html_cache_key });
|
||||
}
|
||||
}
|
||||
// Warn if use_cached_data is set in html cache mode - it has no effect
|
||||
if (this.args.use_cached_data === true) {
|
||||
console.warn(`[JQHTML] Component "${this.component_name()}" has use_cached_data=true but cache mode is 'html'.\n` +
|
||||
`use_cached_data only applies to 'data' cache mode. In 'html' mode, the entire rendered HTML is cached.\n` +
|
||||
`The use_cached_data flag will be ignored.`);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Data cache mode (default) - check for cached data to hydrate this.data
|
||||
@@ -1737,8 +1752,17 @@ class Jqhtml_Component {
|
||||
if (cached_data !== null && typeof cached_data === 'object') {
|
||||
// Hydrate this.data with cached data
|
||||
this.data = cached_data;
|
||||
if (window.jqhtml?.debug?.verbose) {
|
||||
console.log(`[Cache data] Component ${this._cid} (${this.component_name()}) hydrated from cache`, { cache_key, data: cached_data });
|
||||
// If use_cached_data=true, skip on_load() entirely - use cached data as final data
|
||||
if (this.args.use_cached_data === true) {
|
||||
this._use_cached_data_hit = true;
|
||||
if (window.jqhtml?.debug?.verbose) {
|
||||
console.log(`[Cache data] Component ${this._cid} (${this.component_name()}) using cached data (use_cached_data=true, skipping on_load)`, { cache_key, data: cached_data });
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (window.jqhtml?.debug?.verbose) {
|
||||
console.log(`[Cache data] Component ${this._cid} (${this.component_name()}) hydrated from cache`, { cache_key, data: cached_data });
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -1769,6 +1793,15 @@ class Jqhtml_Component {
|
||||
if (this._stopped || this._ready_state >= 2)
|
||||
return;
|
||||
this._log_lifecycle('load', 'start');
|
||||
// use_cached_data feature: If cache hit occurred and use_cached_data=true, skip on_load() entirely
|
||||
// The cached data is already in this.data from create() phase
|
||||
if (this._use_cached_data_hit) {
|
||||
this._ready_state = 2;
|
||||
this._update_debug_attrs();
|
||||
this._log_lifecycle('load', 'complete (use_cached_data - skipped on_load)');
|
||||
this.trigger('load');
|
||||
return;
|
||||
}
|
||||
// Restore this.data to initial state from snapshot (skip on first load)
|
||||
// This ensures on_load() always starts with clean state
|
||||
const is_first_load = this._ready_state < 2;
|
||||
@@ -4452,6 +4485,10 @@ class Load_Coordinator {
|
||||
if (key.startsWith('_')) {
|
||||
continue; // Skip internal properties
|
||||
}
|
||||
// Skip framework properties that shouldn't affect cache identity
|
||||
if (key === 'use_cached_data') {
|
||||
continue;
|
||||
}
|
||||
const value = args[key];
|
||||
const value_type = typeof value;
|
||||
// Handle primitives (string, number, boolean, null, undefined)
|
||||
@@ -4668,7 +4705,7 @@ function init(jQuery) {
|
||||
}
|
||||
}
|
||||
// Version - will be replaced during build with actual version from package.json
|
||||
const version = '2.3.13';
|
||||
const version = '2.3.14';
|
||||
// Default export with all functionality
|
||||
const jqhtml = {
|
||||
// Core
|
||||
|
||||
2
node_modules/@jqhtml/core/dist/jqhtml-core.esm.js.map
generated
vendored
2
node_modules/@jqhtml/core/dist/jqhtml-core.esm.js.map
generated
vendored
File diff suppressed because one or more lines are too long
2
node_modules/@jqhtml/core/dist/load-coordinator.d.ts.map
generated
vendored
2
node_modules/@jqhtml/core/dist/load-coordinator.d.ts.map
generated
vendored
@@ -1 +1 @@
|
||||
{"version":3,"file":"load-coordinator.d.ts","sourceRoot":"","sources":["../src/load-coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAWvD,MAAM,WAAW,mBAAmB;IAChC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,qBAAa,gBAAgB;IACzB,OAAO,CAAC,MAAM,CAAC,SAAS,CAA6C;IAErE;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,mBAAmB;IAqEtF;;;OAGG;IACH,MAAM,CAAC,sBAAsB,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO;IAoBnE;;;OAGG;IACH,MAAM,CAAC,eAAe,CAClB,SAAS,EAAE,gBAAgB,EAC3B,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,GAC/B,MAAM,IAAI;IAkBb;;;OAGG;IACH,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAWlF;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA8CrC;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAuC3E;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI,GAAG;IAahC;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI,IAAI;CAG3B"}
|
||||
{"version":3,"file":"load-coordinator.d.ts","sourceRoot":"","sources":["../src/load-coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAWvD,MAAM,WAAW,mBAAmB;IAChC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,qBAAa,gBAAgB;IACzB,OAAO,CAAC,MAAM,CAAC,SAAS,CAA6C;IAErE;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,mBAAmB;IA0EtF;;;OAGG;IACH,MAAM,CAAC,sBAAsB,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO;IAoBnE;;;OAGG;IACH,MAAM,CAAC,eAAe,CAClB,SAAS,EAAE,gBAAgB,EAC3B,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,GAC/B,MAAM,IAAI;IAkBb;;;OAGG;IACH,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAWlF;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA8CrC;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAuC3E;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI,GAAG;IAahC;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI,IAAI;CAG3B"}
|
||||
2
node_modules/@jqhtml/core/package.json
generated
vendored
2
node_modules/@jqhtml/core/package.json
generated
vendored
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@jqhtml/core",
|
||||
"version": "2.3.13",
|
||||
"version": "2.3.14",
|
||||
"description": "Core runtime library for JQHTML",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
|
||||
2
node_modules/@jqhtml/parser/dist/codegen.js
generated
vendored
2
node_modules/@jqhtml/parser/dist/codegen.js
generated
vendored
@@ -1377,7 +1377,7 @@ export class CodeGenerator {
|
||||
for (const [name, component] of this.components) {
|
||||
code += `// Component: ${name}\n`;
|
||||
code += `jqhtml_components.set('${name}', {\n`;
|
||||
code += ` _jqhtml_version: '2.3.13',\n`; // Version will be replaced during build
|
||||
code += ` _jqhtml_version: '2.3.14',\n`; // Version will be replaced during build
|
||||
code += ` name: '${name}',\n`;
|
||||
code += ` tag: '${component.tagName}',\n`;
|
||||
code += ` defaultAttributes: ${this.serializeAttributeObject(component.defaultAttributes)},\n`;
|
||||
|
||||
2
node_modules/@jqhtml/parser/package.json
generated
vendored
2
node_modules/@jqhtml/parser/package.json
generated
vendored
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@jqhtml/parser",
|
||||
"version": "2.3.13",
|
||||
"version": "2.3.14",
|
||||
"description": "JQHTML template parser - converts templates to JavaScript",
|
||||
"type": "module",
|
||||
"main": "dist/index.js",
|
||||
|
||||
2
node_modules/@jqhtml/vscode-extension/.version
generated
vendored
2
node_modules/@jqhtml/vscode-extension/.version
generated
vendored
@@ -1 +1 @@
|
||||
2.3.13
|
||||
2.3.14
|
||||
|
||||
Binary file not shown.
2
node_modules/@jqhtml/vscode-extension/package.json
generated
vendored
2
node_modules/@jqhtml/vscode-extension/package.json
generated
vendored
@@ -2,7 +2,7 @@
|
||||
"name": "@jqhtml/vscode-extension",
|
||||
"displayName": "JQHTML",
|
||||
"description": "Syntax highlighting and language support for JQHTML template files",
|
||||
"version": "2.3.13",
|
||||
"version": "2.3.14",
|
||||
"publisher": "jqhtml",
|
||||
"license": "MIT",
|
||||
"publishConfig": {
|
||||
|
||||
2
node_modules/baseline-browser-mapping/dist/index.cjs
generated
vendored
2
node_modules/baseline-browser-mapping/dist/index.cjs
generated
vendored
File diff suppressed because one or more lines are too long
2
node_modules/baseline-browser-mapping/dist/index.js
generated
vendored
2
node_modules/baseline-browser-mapping/dist/index.js
generated
vendored
File diff suppressed because one or more lines are too long
6
node_modules/baseline-browser-mapping/package.json
generated
vendored
6
node_modules/baseline-browser-mapping/package.json
generated
vendored
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "baseline-browser-mapping",
|
||||
"main": "./dist/index.cjs",
|
||||
"version": "2.9.5",
|
||||
"version": "2.9.6",
|
||||
"description": "A library for obtaining browser versions with their maximum supported Baseline feature set and Widely Available status.",
|
||||
"exports": {
|
||||
".": {
|
||||
@@ -42,7 +42,7 @@
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
"devDependencies": {
|
||||
"@mdn/browser-compat-data": "^7.1.24",
|
||||
"@mdn/browser-compat-data": "^7.2.0",
|
||||
"@rollup/plugin-terser": "^0.4.4",
|
||||
"@rollup/plugin-typescript": "^12.1.3",
|
||||
"@types/node": "^22.15.17",
|
||||
@@ -55,7 +55,7 @@
|
||||
"tslib": "^2.8.1",
|
||||
"typescript": "^5.7.2",
|
||||
"typescript-eslint": "^8.35.0",
|
||||
"web-features": "^3.10.0"
|
||||
"web-features": "^3.11.0"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
2
node_modules/sass/package.json
generated
vendored
2
node_modules/sass/package.json
generated
vendored
@@ -1 +1 @@
|
||||
{"name":"sass","description":"A pure JavaScript implementation of Sass.","license":"MIT","bugs":"https://github.com/sass/dart-sass/issues","homepage":"https://github.com/sass/dart-sass","repository":{"type":"git","url":"https://github.com/sass/dart-sass"},"author":{"name":"Natalie Weizenbaum","email":"nweiz@google.com","url":"https://github.com/nex3"},"engines":{"node":">=14.0.0"},"dependencies":{"chokidar":"^4.0.0","immutable":"^5.0.2","source-map-js":">=0.6.2 <2.0.0"},"optionalDependencies":{"@parcel/watcher":"^2.4.1"},"keywords":["style","scss","sass","preprocessor","css"],"types":"types/index.d.ts","exports":{"types":"./types/index.d.ts","node":{"require":"./sass.node.js","default":"./sass.node.mjs"},"default":{"require":"./sass.default.cjs","default":"./sass.default.js"}},"version":"1.95.0","bin":{"sass":"sass.js"},"main":"sass.node.js"}
|
||||
{"name":"sass","description":"A pure JavaScript implementation of Sass.","license":"MIT","bugs":"https://github.com/sass/dart-sass/issues","homepage":"https://github.com/sass/dart-sass","repository":{"type":"git","url":"https://github.com/sass/dart-sass"},"author":{"name":"Natalie Weizenbaum","email":"nweiz@google.com","url":"https://github.com/nex3"},"engines":{"node":">=14.0.0"},"dependencies":{"chokidar":"^4.0.0","immutable":"^5.0.2","source-map-js":">=0.6.2 <2.0.0"},"optionalDependencies":{"@parcel/watcher":"^2.4.1"},"keywords":["style","scss","sass","preprocessor","css"],"types":"types/index.d.ts","exports":{"types":"./types/index.d.ts","node":{"require":"./sass.node.js","default":"./sass.node.mjs"},"default":{"require":"./sass.default.cjs","default":"./sass.default.js"}},"version":"1.95.1","bin":{"sass":"sass.js"},"main":"sass.node.js"}
|
||||
31
node_modules/sass/sass.dart.js
generated
vendored
31
node_modules/sass/sass.dart.js
generated
vendored
@@ -130,7 +130,7 @@ self.fs = _cliPkgRequires.fs;
|
||||
self.nodeModule = _cliPkgRequires.nodeModule;
|
||||
self.stream = _cliPkgRequires.stream;
|
||||
self.util = _cliPkgRequires.util;
|
||||
// Generated by dart2js (, trust primitives, omit checks, lax runtime type, csp, intern-composite-values), the Dart to JavaScript compiler version: 3.10.3.
|
||||
// Generated by dart2js (, trust primitives, omit checks, lax runtime type, csp, intern-composite-values), the Dart to JavaScript compiler version: 3.10.4.
|
||||
// The code supports the following hooks:
|
||||
// dartPrint(message):
|
||||
// if this function is defined it is called instead of the Dart [print]
|
||||
@@ -9791,19 +9791,18 @@ self.util = _cliPkgRequires.util;
|
||||
t1.Stylesheet$internal$5$globalVariables$plainCss(children, span, parseTimeWarnings, globalVariables, plainCss);
|
||||
return t1;
|
||||
},
|
||||
Stylesheet_Stylesheet$parse(contents, syntax, url) {
|
||||
var error, stackTrace, url0, t1, exception, t2,
|
||||
parseSelectors = false;
|
||||
Stylesheet_Stylesheet$parse(contents, syntax, parseSelectors, url) {
|
||||
var error, stackTrace, url0, t1, exception, t2;
|
||||
try {
|
||||
switch (syntax.index) {
|
||||
case 1:
|
||||
t1 = new A.SassParser(parseSelectors, A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.FileSpan), A._setArrayType([], type$.JSArray_Record_3_nullable_Deprecation_deprecation_and_String_message_and_FileSpan_span), A.SpanScanner$(contents, url), null).parse$0(0);
|
||||
t1 = new A.SassParser(false, A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.FileSpan), A._setArrayType([], type$.JSArray_Record_3_nullable_Deprecation_deprecation_and_String_message_and_FileSpan_span), A.SpanScanner$(contents, url), null).parse$0(0);
|
||||
return t1;
|
||||
case 0:
|
||||
t1 = A.ScssParser$(contents, parseSelectors, url).parse$0(0);
|
||||
t1 = A.ScssParser$(contents, false, url).parse$0(0);
|
||||
return t1;
|
||||
case 2:
|
||||
t1 = new A.CssParser(parseSelectors, A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.FileSpan), A._setArrayType([], type$.JSArray_Record_3_nullable_Deprecation_deprecation_and_String_message_and_FileSpan_span), A.SpanScanner$(contents, url), null).parse$0(0);
|
||||
t1 = new A.CssParser(false, A.LinkedHashMap_LinkedHashMap$_empty(type$.String, type$.FileSpan), A._setArrayType([], type$.JSArray_Record_3_nullable_Deprecation_deprecation_and_String_message_and_FileSpan_span), A.SpanScanner$(contents, url), null).parse$0(0);
|
||||
return t1;
|
||||
}
|
||||
} catch (exception) {
|
||||
@@ -10176,7 +10175,7 @@ self.util = _cliPkgRequires.util;
|
||||
case 5:
|
||||
// else
|
||||
t1 = A.readFile(path);
|
||||
stylesheet = A.Stylesheet_Stylesheet$parse(t1, syntax, $.$get$context().toUri$1(path));
|
||||
stylesheet = A.Stylesheet_Stylesheet$parse(t1, syntax, false, $.$get$context().toUri$1(path));
|
||||
case 4:
|
||||
// join
|
||||
$async$goto = 7;
|
||||
@@ -10216,7 +10215,7 @@ self.util = _cliPkgRequires.util;
|
||||
t4.addAll$1(0, futureDeprecations);
|
||||
logger = new A.DeprecationProcessingLogger(A.LinkedHashMap_LinkedHashMap$_empty(t1, type$.int), logger, t2, t3, t4, !verbose);
|
||||
logger.validate$0();
|
||||
stylesheet = A.Stylesheet_Stylesheet$parse(source, syntax, null);
|
||||
stylesheet = A.Stylesheet_Stylesheet$parse(source, syntax, false, null);
|
||||
t1 = stylesheet.span;
|
||||
_0_0 = t1.get$sourceUrl(t1);
|
||||
if (type$.Uri._is(_0_0))
|
||||
@@ -11074,7 +11073,7 @@ self.util = _cliPkgRequires.util;
|
||||
t11.addAll$1(0, t12);
|
||||
logger = new A.DeprecationProcessingLogger(A.LinkedHashMap_LinkedHashMap$_empty(t13, type$.int), t4, t14, t10, t11, !t8);
|
||||
logger.validate$0();
|
||||
stylesheet = A.Stylesheet_Stylesheet$parse(t2, t3 == null ? B.Syntax_SCSS_0_scss : t3, null);
|
||||
stylesheet = A.Stylesheet_Stylesheet$parse(t2, t3 == null ? B.Syntax_SCSS_0_scss : t3, false, null);
|
||||
t2 = stylesheet.span;
|
||||
_0_0 = t2.get$sourceUrl(t2);
|
||||
if (type$.Uri._is(_0_0))
|
||||
@@ -11137,7 +11136,7 @@ self.util = _cliPkgRequires.util;
|
||||
t3 = A.readFile(source);
|
||||
if (t2 == null)
|
||||
t2 = A.Syntax_forPath(source);
|
||||
stylesheet = A.Stylesheet_Stylesheet$parse(t3, t2, $.$get$context().toUri$1(source));
|
||||
stylesheet = A.Stylesheet_Stylesheet$parse(t3, t2, false, $.$get$context().toUri$1(source));
|
||||
}
|
||||
result0 = A._compileStylesheet(stylesheet, logger, importCache, null, $.$get$FilesystemImporter_cwd(), null, t4, true, null, null, t5, t7, t1);
|
||||
logger.summarize$1$js(false);
|
||||
@@ -28780,7 +28779,7 @@ self.util = _cliPkgRequires.util;
|
||||
J.set$deprecations$x(self.exports, A.jsify($.$get$deprecations()));
|
||||
J.set$Version$x(self.exports, $.$get$versionClass());
|
||||
J.set$loadParserExports_$x(self.exports, A.allowInterop(A.parser0__loadParserExports$closure()));
|
||||
J.set$info$x(self.exports, "dart-sass\t1.95.0\t(Sass Compiler)\t[Dart]\ndart2js\t3.10.3\t(Dart Compiler)\t[Dart]");
|
||||
J.set$info$x(self.exports, "dart-sass\t1.95.1\t(Sass Compiler)\t[Dart]\ndart2js\t3.10.4\t(Dart Compiler)\t[Dart]");
|
||||
A.updateCanonicalizeContextPrototype();
|
||||
A.updateSourceSpanPrototype();
|
||||
J.set$render$x(self.exports, A.allowInteropNamed("sass.render", A.legacy__render$closure()));
|
||||
@@ -34059,7 +34058,7 @@ self.util = _cliPkgRequires.util;
|
||||
switch ($async$goto) {
|
||||
case 0:
|
||||
// Function start
|
||||
$async$returnValue = "1.95.0 compiled with dart2js 3.10.3";
|
||||
$async$returnValue = "1.95.1 compiled with dart2js 3.10.4";
|
||||
// goto return
|
||||
$async$goto = 1;
|
||||
break;
|
||||
@@ -50996,7 +50995,7 @@ self.util = _cliPkgRequires.util;
|
||||
t3 = result.contents;
|
||||
t1 = result.syntax;
|
||||
t2 = $async$self.originalUrl.resolveUri$1(t2);
|
||||
$async$returnValue = A.Stylesheet_Stylesheet$parse(t3, t1, t2);
|
||||
$async$returnValue = A.Stylesheet_Stylesheet$parse(t3, t1, false, t2);
|
||||
// goto return
|
||||
$async$goto = 1;
|
||||
break;
|
||||
@@ -52612,7 +52611,7 @@ self.util = _cliPkgRequires.util;
|
||||
}
|
||||
try {
|
||||
argVersion = A.Version_Version$parse(id);
|
||||
sassVersion = A.Version_Version$parse("1.95.0");
|
||||
sassVersion = A.Version_Version$parse("1.95.1");
|
||||
if (J.compareTo$1$ns(argVersion, sassVersion) > 0)
|
||||
A.ExecutableOptions__fail("Invalid version " + A.S(argVersion) + ". --fatal-deprecation requires a version less than or equal to the current Dart Sass version.");
|
||||
J.addAll$1$ax(deprecations, A.Deprecation_forVersion(argVersion));
|
||||
@@ -56567,7 +56566,7 @@ self.util = _cliPkgRequires.util;
|
||||
t3 = result.contents;
|
||||
t1 = result.syntax;
|
||||
t4 = _this.originalUrl;
|
||||
return A.Stylesheet_Stylesheet$parse(t3, t1, t4 == null ? t2 : t4.resolveUri$1(t2));
|
||||
return A.Stylesheet_Stylesheet$parse(t3, t1, false, t4 == null ? t2 : t4.resolveUri$1(t2));
|
||||
},
|
||||
$signature: 84
|
||||
};
|
||||
|
||||
30
package-lock.json
generated
30
package-lock.json
generated
@@ -2658,9 +2658,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jqhtml/core": {
|
||||
"version": "2.3.13",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/core/-/core-2.3.13.tgz",
|
||||
"integrity": "sha512-EZiMkfRj0c9r4f2S8fcxNYRMd5FWorkUz5D8p5cKRUa0d6IhAJov3NzKgooHAg52TN6xupWo0bB+jNFQxd6v0w==",
|
||||
"version": "2.3.14",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/core/-/core-2.3.14.tgz",
|
||||
"integrity": "sha512-hJkCDrFhE1RnCCu0dG2wl+DqOzOZ92TRz93VlVjkgX+wu6muM0knbM5lsLnK9LD6n6nT13u5pvQEl1DVQVQRLg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@rollup/plugin-node-resolve": "^16.0.1",
|
||||
@@ -2684,9 +2684,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jqhtml/parser": {
|
||||
"version": "2.3.13",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/parser/-/parser-2.3.13.tgz",
|
||||
"integrity": "sha512-zzFL0thym8aCx/WQshiYXRipwU09MR1YCLAZMGnZeez+CVEbgymlBH0lsjVexHlHfXOgr31sXGLoJo197WvlTg==",
|
||||
"version": "2.3.14",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/parser/-/parser-2.3.14.tgz",
|
||||
"integrity": "sha512-WMpYG1pagvopbLg2dUAc94C62oiyQ2rPhAl4lPcCxL6VDOFeeCBzjdqx/40oie551y/yiCcrd2nr3YeXDh2bnw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/jest": "^29.5.11",
|
||||
@@ -2724,9 +2724,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@jqhtml/vscode-extension": {
|
||||
"version": "2.3.13",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/vscode-extension/-/vscode-extension-2.3.13.tgz",
|
||||
"integrity": "sha512-EMJkTBovxvPso/p5WToJUiOp1dPFirdbsV+rVuhCMcu8LhbAQsGxiRNm5gYOVEHnlMpFA2eoUX7l5d9C3ySo0A==",
|
||||
"version": "2.3.14",
|
||||
"resolved": "http://privatenpm.hanson.xyz/@jqhtml/vscode-extension/-/vscode-extension-2.3.14.tgz",
|
||||
"integrity": "sha512-I0Z83JBB3b2RQYs/KQ8FNTpuvsvgH15MvByMvEsffGRCnEr3ehX4BCxWizjaIrpqPzakQjIZQSe1KW9mNbmGfw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"vscode": "^1.74.0"
|
||||
@@ -4957,9 +4957,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/baseline-browser-mapping": {
|
||||
"version": "2.9.5",
|
||||
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.5.tgz",
|
||||
"integrity": "sha512-D5vIoztZOq1XM54LUdttJVc96ggEsIfju2JBvht06pSzpckp3C7HReun67Bghzrtdsq9XdMGbSSB3v3GhMNmAA==",
|
||||
"version": "2.9.6",
|
||||
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.6.tgz",
|
||||
"integrity": "sha512-v9BVVpOTLB59C9E7aSnmIF8h7qRsFpx+A2nugVMTszEOMcfjlZMsXRm4LF23I3Z9AJxc8ANpIvzbzONoX9VJlg==",
|
||||
"license": "Apache-2.0",
|
||||
"bin": {
|
||||
"baseline-browser-mapping": "dist/cli.js"
|
||||
@@ -11783,9 +11783,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/sass": {
|
||||
"version": "1.95.0",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.95.0.tgz",
|
||||
"integrity": "sha512-9QMjhLq+UkOg/4bb8Lt8A+hJZvY3t+9xeZMKSBtBEgxrXA3ed5Ts4NDreUkYgJP1BTmrscQE/xYhf7iShow6lw==",
|
||||
"version": "1.95.1",
|
||||
"resolved": "https://registry.npmjs.org/sass/-/sass-1.95.1.tgz",
|
||||
"integrity": "sha512-uPoDh5NIEZV4Dp5GBodkmNY9tSQfXY02pmCcUo+FR1P+x953HGkpw+vV28D4IqYB6f8webZtwoSaZaiPtpTeMg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"chokidar": "^4.0.0",
|
||||
|
||||
Reference in New Issue
Block a user