1- /* Version: 0.27 .0 - May 23, 2026 17:00:12 */
1+ /* Version: 0.28 .0 - May 23, 2026 23:51:48 */
22/**
33 * Canonical token names for the built-in injectables exposed by the core `ng`
44 * module.
@@ -2987,7 +2987,7 @@ class AngularRuntime extends EventTarget {
29872987 /** @internal */
29882988 this._bootsrappedModules = [];
29892989 /** AngularTS version string replaced at build time. */
2990- this.version = "0.27 .0";
2990+ this.version = "0.28 .0";
29912991 /** Retrieve the controller instance cached on a compiled DOM element. */
29922992 this.getController = getController;
29932993 /** Retrieve the injector cached on a bootstrapped DOM element. */
@@ -3011,7 +3011,7 @@ class AngularRuntime extends EventTarget {
30113011 this.$t[token] = token;
30123012 });
30133013 }
3014- if (runtimeOptions.attachToWindow ) {
3014+ if (! runtimeOptions.subapp ) {
30153015 window.angular = this;
30163016 }
30173017 if (runtimeOptions.registerBuiltins) {
@@ -3357,14 +3357,12 @@ function normalizeRuntimeOptions(options) {
33573357 if (typeof options === "boolean") {
33583358 return {
33593359 subapp: options,
3360- attachToWindow: !options,
33613360 registerBuiltins: true,
33623361 };
33633362 }
33643363 const subapp = options.subapp ?? false;
33653364 return {
33663365 subapp,
3367- attachToWindow: options.attachToWindow ?? !subapp,
33683366 registerBuiltins: options.registerBuiltins ?? true,
33693367 };
33703368}
@@ -6843,6 +6841,7 @@ const ngEventDirectives = EVENT_NAMES.reduce((directives, eventName) => {
68436841 createEventDirectiveFactory(eventName);
68446842 return directives;
68456843}, {});
6844+ ngEventDirectives.ngClick;
68466845/**
68476846 * Creates a directive that evaluates an expression when the element event fires.
68486847 */
@@ -32473,6 +32472,11 @@ class WebSocketProvider {
3247332472const WASM_SCOPE_IMPORT_NAMESPACE = "angular_ts";
3247432473const textEncoder = new TextEncoder();
3247532474const textDecoder = new TextDecoder();
32475+ const UNSAFE_SCOPE_PATH_KEYS = new Set([
32476+ "__proto__",
32477+ "constructor",
32478+ "prototype",
32479+ ]);
3247632480/**
3247732481 * Host-side wrapper around one AngularTS scope exposed to Wasm clients.
3247832482 *
@@ -32927,6 +32931,9 @@ function readScopePath(scope, path) {
3292732931 return scope;
3292832932 }
3292932933 const keys = scopePathKeys(path);
32934+ if (!isSafeScopePath(keys)) {
32935+ return undefined;
32936+ }
3293032937 let current = scope;
3293132938 for (let i = 0, l = keys.length; i < l; i++) {
3293232939 if (current === null || current === undefined) {
@@ -32938,7 +32945,7 @@ function readScopePath(scope, path) {
3293832945}
3293932946function writeScopePath(scope, path, value) {
3294032947 const keys = scopePathKeys(path);
32941- if (keys.length === 0) {
32948+ if (keys.length === 0 || !isSafeScopePath(keys) ) {
3294232949 return false;
3294332950 }
3294432951 let current = scope;
@@ -32958,7 +32965,7 @@ function writeScopePath(scope, path, value) {
3295832965}
3295932966function deleteScopePath(scope, path) {
3296032967 const keys = scopePathKeys(path);
32961- if (keys.length === 0) {
32968+ if (keys.length === 0 || !isSafeScopePath(keys) ) {
3296232969 return false;
3296332970 }
3296432971 let current = scope;
@@ -32974,6 +32981,9 @@ function deleteScopePath(scope, path) {
3297432981function scopePathKeys(path) {
3297532982 return path.split(".").filter(Boolean);
3297632983}
32984+ function isSafeScopePath(keys) {
32985+ return keys.every((key) => !UNSAFE_SCOPE_PATH_KEYS.has(key));
32986+ }
3297732987
3297832988/**
3297932989 * Runtime identity and DOM globals.
@@ -33321,17 +33331,16 @@ function normalizeServiceRegistrations(services) {
3332133331}
3332233332
3332333333/**
33324- * Creates a side-effect-free AngularTS runtime with no built-in modules.
33334+ * Creates an AngularTS runtime with no built-in modules.
3332533335 */
3332633336function createAngularBare(options = {}) {
3332733337 return new AngularRuntime({
33328- attachToWindow: false,
3332933338 registerBuiltins: false,
3333033339 ...options,
3333133340 });
3333233341}
3333333342/**
33334- * Creates a side-effect-free AngularTS runtime with a custom `ng` module.
33343+ * Creates an AngularTS runtime with a custom `ng` module.
3333533344 */
3333633345function createAngularCustom(options = {}) {
3333733346 const angular = createAngularBare(options);
0 commit comments