@adaas/are 0.0.2
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.
- package/.conf/tsconfig.base.json +110 -0
- package/.conf/tsconfig.browser.json +43 -0
- package/.conf/tsconfig.node.json +47 -0
- package/.nvmrc +1 -0
- package/LICENSE +22 -0
- package/README.md +2 -0
- package/dist/browser/index.d.mts +1134 -0
- package/dist/browser/index.mjs +2624 -0
- package/dist/browser/index.mjs.map +1 -0
- package/dist/node/chunk-EQQGB2QZ.mjs +15 -0
- package/dist/node/chunk-EQQGB2QZ.mjs.map +1 -0
- package/dist/node/engines/html/AreHTML.compiler.d.mts +114 -0
- package/dist/node/engines/html/AreHTML.compiler.d.ts +114 -0
- package/dist/node/engines/html/AreHTML.compiler.js +408 -0
- package/dist/node/engines/html/AreHTML.compiler.js.map +1 -0
- package/dist/node/engines/html/AreHTML.compiler.mjs +398 -0
- package/dist/node/engines/html/AreHTML.compiler.mjs.map +1 -0
- package/dist/node/engines/html/AreHTML.engine.d.mts +36 -0
- package/dist/node/engines/html/AreHTML.engine.d.ts +36 -0
- package/dist/node/engines/html/AreHTML.engine.js +122 -0
- package/dist/node/engines/html/AreHTML.engine.js.map +1 -0
- package/dist/node/engines/html/AreHTML.engine.mjs +112 -0
- package/dist/node/engines/html/AreHTML.engine.mjs.map +1 -0
- package/dist/node/engines/html/index.d.mts +26 -0
- package/dist/node/engines/html/index.d.ts +26 -0
- package/dist/node/engines/html/index.js +17 -0
- package/dist/node/engines/html/index.js.map +1 -0
- package/dist/node/engines/html/index.mjs +5 -0
- package/dist/node/engines/html/index.mjs.map +1 -0
- package/dist/node/engines/json/AreJSON.compiler.d.mts +21 -0
- package/dist/node/engines/json/AreJSON.compiler.d.ts +21 -0
- package/dist/node/engines/json/AreJSON.compiler.js +24 -0
- package/dist/node/engines/json/AreJSON.compiler.js.map +1 -0
- package/dist/node/engines/json/AreJSON.compiler.mjs +17 -0
- package/dist/node/engines/json/AreJSON.compiler.mjs.map +1 -0
- package/dist/node/index-BD-6iOuR.d.ts +238 -0
- package/dist/node/index-DMXWCL7R.d.mts +238 -0
- package/dist/node/index.d.mts +40 -0
- package/dist/node/index.d.ts +40 -0
- package/dist/node/index.js +105 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/index.mjs +16 -0
- package/dist/node/index.mjs.map +1 -0
- package/dist/node/lib/AreApp/AreApp.container.d.mts +22 -0
- package/dist/node/lib/AreApp/AreApp.container.d.ts +22 -0
- package/dist/node/lib/AreApp/AreApp.container.js +60 -0
- package/dist/node/lib/AreApp/AreApp.container.js.map +1 -0
- package/dist/node/lib/AreApp/AreApp.container.mjs +48 -0
- package/dist/node/lib/AreApp/AreApp.container.mjs.map +1 -0
- package/dist/node/lib/AreApp/AreApp.env.d.mts +2 -0
- package/dist/node/lib/AreApp/AreApp.env.d.ts +2 -0
- package/dist/node/lib/AreApp/AreApp.env.js +4 -0
- package/dist/node/lib/AreApp/AreApp.env.js.map +1 -0
- package/dist/node/lib/AreApp/AreApp.env.mjs +3 -0
- package/dist/node/lib/AreApp/AreApp.env.mjs.map +1 -0
- package/dist/node/lib/AreApp/AreApp.error.d.mts +6 -0
- package/dist/node/lib/AreApp/AreApp.error.d.ts +6 -0
- package/dist/node/lib/AreApp/AreApp.error.js +10 -0
- package/dist/node/lib/AreApp/AreApp.error.js.map +1 -0
- package/dist/node/lib/AreApp/AreApp.error.mjs +9 -0
- package/dist/node/lib/AreApp/AreApp.error.mjs.map +1 -0
- package/dist/node/lib/AreApp/AreApp.types.d.mts +2 -0
- package/dist/node/lib/AreApp/AreApp.types.d.ts +2 -0
- package/dist/node/lib/AreApp/AreApp.types.js +4 -0
- package/dist/node/lib/AreApp/AreApp.types.js.map +1 -0
- package/dist/node/lib/AreApp/AreApp.types.mjs +3 -0
- package/dist/node/lib/AreApp/AreApp.types.mjs.map +1 -0
- package/dist/node/lib/AreApp/index.d.mts +17 -0
- package/dist/node/lib/AreApp/index.d.ts +17 -0
- package/dist/node/lib/AreApp/index.js +24 -0
- package/dist/node/lib/AreApp/index.js.map +1 -0
- package/dist/node/lib/AreApp/index.mjs +6 -0
- package/dist/node/lib/AreApp/index.mjs.map +1 -0
- package/dist/node/lib/AreCompiler/AreCompiler.component.d.mts +238 -0
- package/dist/node/lib/AreCompiler/AreCompiler.component.d.ts +238 -0
- package/dist/node/lib/AreCompiler/AreCompiler.component.js +647 -0
- package/dist/node/lib/AreCompiler/AreCompiler.component.js.map +1 -0
- package/dist/node/lib/AreCompiler/AreCompiler.component.mjs +637 -0
- package/dist/node/lib/AreCompiler/AreCompiler.component.mjs.map +1 -0
- package/dist/node/lib/AreCompiler/AreCompiler.error.d.mts +8 -0
- package/dist/node/lib/AreCompiler/AreCompiler.error.d.ts +8 -0
- package/dist/node/lib/AreCompiler/AreCompiler.error.js +12 -0
- package/dist/node/lib/AreCompiler/AreCompiler.error.js.map +1 -0
- package/dist/node/lib/AreCompiler/AreCompiler.error.mjs +11 -0
- package/dist/node/lib/AreCompiler/AreCompiler.error.mjs.map +1 -0
- package/dist/node/lib/AreCompiler/AreCompiler.types.d.mts +2 -0
- package/dist/node/lib/AreCompiler/AreCompiler.types.d.ts +2 -0
- package/dist/node/lib/AreCompiler/AreCompiler.types.js +4 -0
- package/dist/node/lib/AreCompiler/AreCompiler.types.js.map +1 -0
- package/dist/node/lib/AreCompiler/AreCompiler.types.mjs +3 -0
- package/dist/node/lib/AreCompiler/AreCompiler.types.mjs.map +1 -0
- package/dist/node/lib/AreCompiler/index.d.mts +17 -0
- package/dist/node/lib/AreCompiler/index.d.ts +17 -0
- package/dist/node/lib/AreCompiler/index.js +24 -0
- package/dist/node/lib/AreCompiler/index.js.map +1 -0
- package/dist/node/lib/AreCompiler/index.mjs +6 -0
- package/dist/node/lib/AreCompiler/index.mjs.map +1 -0
- package/dist/node/lib/AreComponent/Are.component.d.mts +45 -0
- package/dist/node/lib/AreComponent/Are.component.d.ts +45 -0
- package/dist/node/lib/AreComponent/Are.component.js +165 -0
- package/dist/node/lib/AreComponent/Are.component.js.map +1 -0
- package/dist/node/lib/AreComponent/Are.component.mjs +156 -0
- package/dist/node/lib/AreComponent/Are.component.mjs.map +1 -0
- package/dist/node/lib/AreComponent/Are.constants.d.mts +32 -0
- package/dist/node/lib/AreComponent/Are.constants.d.ts +32 -0
- package/dist/node/lib/AreComponent/Are.constants.js +27 -0
- package/dist/node/lib/AreComponent/Are.constants.js.map +1 -0
- package/dist/node/lib/AreComponent/Are.constants.mjs +27 -0
- package/dist/node/lib/AreComponent/Are.constants.mjs.map +1 -0
- package/dist/node/lib/AreComponent/Are.context.d.mts +22 -0
- package/dist/node/lib/AreComponent/Are.context.d.ts +22 -0
- package/dist/node/lib/AreComponent/Are.context.js +45 -0
- package/dist/node/lib/AreComponent/Are.context.js.map +1 -0
- package/dist/node/lib/AreComponent/Are.context.mjs +38 -0
- package/dist/node/lib/AreComponent/Are.context.mjs.map +1 -0
- package/dist/node/lib/AreComponent/Are.types.d.mts +2 -0
- package/dist/node/lib/AreComponent/Are.types.d.ts +2 -0
- package/dist/node/lib/AreComponent/Are.types.js +4 -0
- package/dist/node/lib/AreComponent/Are.types.js.map +1 -0
- package/dist/node/lib/AreComponent/Are.types.mjs +3 -0
- package/dist/node/lib/AreComponent/Are.types.mjs.map +1 -0
- package/dist/node/lib/AreComponent/index.d.mts +11 -0
- package/dist/node/lib/AreComponent/index.d.ts +11 -0
- package/dist/node/lib/AreComponent/index.js +31 -0
- package/dist/node/lib/AreComponent/index.js.map +1 -0
- package/dist/node/lib/AreComponent/index.mjs +7 -0
- package/dist/node/lib/AreComponent/index.mjs.map +1 -0
- package/dist/node/lib/AreEvent/AreEvent.context.d.mts +8 -0
- package/dist/node/lib/AreEvent/AreEvent.context.d.ts +8 -0
- package/dist/node/lib/AreEvent/AreEvent.context.js +34 -0
- package/dist/node/lib/AreEvent/AreEvent.context.js.map +1 -0
- package/dist/node/lib/AreEvent/AreEvent.context.mjs +27 -0
- package/dist/node/lib/AreEvent/AreEvent.context.mjs.map +1 -0
- package/dist/node/lib/AreEvent/AreEvent.types.d.mts +16 -0
- package/dist/node/lib/AreEvent/AreEvent.types.d.ts +16 -0
- package/dist/node/lib/AreEvent/AreEvent.types.js +4 -0
- package/dist/node/lib/AreEvent/AreEvent.types.js.map +1 -0
- package/dist/node/lib/AreEvent/AreEvent.types.mjs +3 -0
- package/dist/node/lib/AreEvent/AreEvent.types.mjs.map +1 -0
- package/dist/node/lib/AreEvent/index.d.mts +8 -0
- package/dist/node/lib/AreEvent/index.d.ts +8 -0
- package/dist/node/lib/AreEvent/index.js +19 -0
- package/dist/node/lib/AreEvent/index.js.map +1 -0
- package/dist/node/lib/AreEvent/index.mjs +5 -0
- package/dist/node/lib/AreEvent/index.mjs.map +1 -0
- package/dist/node/lib/AreIndex/AreIndex.context.d.mts +8 -0
- package/dist/node/lib/AreIndex/AreIndex.context.d.ts +8 -0
- package/dist/node/lib/AreIndex/AreIndex.context.js +142 -0
- package/dist/node/lib/AreIndex/AreIndex.context.js.map +1 -0
- package/dist/node/lib/AreIndex/AreIndex.context.mjs +141 -0
- package/dist/node/lib/AreIndex/AreIndex.context.mjs.map +1 -0
- package/dist/node/lib/AreIndex/index.d.mts +8 -0
- package/dist/node/lib/AreIndex/index.d.ts +8 -0
- package/dist/node/lib/AreIndex/index.js +12 -0
- package/dist/node/lib/AreIndex/index.js.map +1 -0
- package/dist/node/lib/AreIndex/index.mjs +4 -0
- package/dist/node/lib/AreIndex/index.mjs.map +1 -0
- package/dist/node/lib/AreNode/AreNode.constants.d.mts +36 -0
- package/dist/node/lib/AreNode/AreNode.constants.d.ts +36 -0
- package/dist/node/lib/AreNode/AreNode.constants.js +17 -0
- package/dist/node/lib/AreNode/AreNode.constants.js.map +1 -0
- package/dist/node/lib/AreNode/AreNode.constants.mjs +17 -0
- package/dist/node/lib/AreNode/AreNode.constants.mjs.map +1 -0
- package/dist/node/lib/AreNode/AreNode.entity.d.mts +8 -0
- package/dist/node/lib/AreNode/AreNode.entity.d.ts +8 -0
- package/dist/node/lib/AreNode/AreNode.entity.js +164 -0
- package/dist/node/lib/AreNode/AreNode.entity.js.map +1 -0
- package/dist/node/lib/AreNode/AreNode.entity.mjs +157 -0
- package/dist/node/lib/AreNode/AreNode.entity.mjs.map +1 -0
- package/dist/node/lib/AreNode/AreNode.error.d.mts +2 -0
- package/dist/node/lib/AreNode/AreNode.error.d.ts +2 -0
- package/dist/node/lib/AreNode/AreNode.error.js +4 -0
- package/dist/node/lib/AreNode/AreNode.error.js.map +1 -0
- package/dist/node/lib/AreNode/AreNode.error.mjs +3 -0
- package/dist/node/lib/AreNode/AreNode.error.mjs.map +1 -0
- package/dist/node/lib/AreNode/AreNode.types.d.mts +13 -0
- package/dist/node/lib/AreNode/AreNode.types.d.ts +13 -0
- package/dist/node/lib/AreNode/AreNode.types.js +4 -0
- package/dist/node/lib/AreNode/AreNode.types.js.map +1 -0
- package/dist/node/lib/AreNode/AreNode.types.mjs +3 -0
- package/dist/node/lib/AreNode/AreNode.types.mjs.map +1 -0
- package/dist/node/lib/AreNode/index.d.mts +9 -0
- package/dist/node/lib/AreNode/index.d.ts +9 -0
- package/dist/node/lib/AreNode/index.js +26 -0
- package/dist/node/lib/AreNode/index.js.map +1 -0
- package/dist/node/lib/AreNode/index.mjs +6 -0
- package/dist/node/lib/AreNode/index.mjs.map +1 -0
- package/dist/node/lib/AreProps/AreProps.context.d.mts +9 -0
- package/dist/node/lib/AreProps/AreProps.context.d.ts +9 -0
- package/dist/node/lib/AreProps/AreProps.context.js +32 -0
- package/dist/node/lib/AreProps/AreProps.context.js.map +1 -0
- package/dist/node/lib/AreProps/AreProps.context.mjs +25 -0
- package/dist/node/lib/AreProps/AreProps.context.mjs.map +1 -0
- package/dist/node/lib/AreProps/index.d.mts +3 -0
- package/dist/node/lib/AreProps/index.d.ts +3 -0
- package/dist/node/lib/AreProps/index.js +12 -0
- package/dist/node/lib/AreProps/index.js.map +1 -0
- package/dist/node/lib/AreProps/index.mjs +4 -0
- package/dist/node/lib/AreProps/index.mjs.map +1 -0
- package/dist/node/lib/AreRoot/AreRoot.component.d.mts +18 -0
- package/dist/node/lib/AreRoot/AreRoot.component.d.ts +18 -0
- package/dist/node/lib/AreRoot/AreRoot.component.js +53 -0
- package/dist/node/lib/AreRoot/AreRoot.component.js.map +1 -0
- package/dist/node/lib/AreRoot/AreRoot.component.mjs +41 -0
- package/dist/node/lib/AreRoot/AreRoot.component.mjs.map +1 -0
- package/dist/node/lib/AreRoot/index.d.mts +11 -0
- package/dist/node/lib/AreRoot/index.d.ts +11 -0
- package/dist/node/lib/AreRoot/index.js +12 -0
- package/dist/node/lib/AreRoot/index.js.map +1 -0
- package/dist/node/lib/AreRoot/index.mjs +4 -0
- package/dist/node/lib/AreRoot/index.mjs.map +1 -0
- package/dist/node/lib/AreRouter/AreRouter.componeent.d.mts +17 -0
- package/dist/node/lib/AreRouter/AreRouter.componeent.d.ts +17 -0
- package/dist/node/lib/AreRouter/AreRouter.componeent.js +37 -0
- package/dist/node/lib/AreRouter/AreRouter.componeent.js.map +1 -0
- package/dist/node/lib/AreRouter/AreRouter.componeent.mjs +25 -0
- package/dist/node/lib/AreRouter/AreRouter.componeent.mjs.map +1 -0
- package/dist/node/lib/AreRouter/index.d.mts +12 -0
- package/dist/node/lib/AreRouter/index.d.ts +12 -0
- package/dist/node/lib/AreRouter/index.js +12 -0
- package/dist/node/lib/AreRouter/index.js.map +1 -0
- package/dist/node/lib/AreRouter/index.mjs +4 -0
- package/dist/node/lib/AreRouter/index.mjs.map +1 -0
- package/dist/node/lib/AreScene/AreScene.context.d.mts +8 -0
- package/dist/node/lib/AreScene/AreScene.context.d.ts +8 -0
- package/dist/node/lib/AreScene/AreScene.context.js +249 -0
- package/dist/node/lib/AreScene/AreScene.context.js.map +1 -0
- package/dist/node/lib/AreScene/AreScene.context.mjs +248 -0
- package/dist/node/lib/AreScene/AreScene.context.mjs.map +1 -0
- package/dist/node/lib/AreScene/AreScene.error.d.mts +14 -0
- package/dist/node/lib/AreScene/AreScene.error.d.ts +14 -0
- package/dist/node/lib/AreScene/AreScene.error.js +18 -0
- package/dist/node/lib/AreScene/AreScene.error.js.map +1 -0
- package/dist/node/lib/AreScene/AreScene.error.mjs +17 -0
- package/dist/node/lib/AreScene/AreScene.error.mjs.map +1 -0
- package/dist/node/lib/AreScene/AreScene.types.d.mts +9 -0
- package/dist/node/lib/AreScene/AreScene.types.d.ts +9 -0
- package/dist/node/lib/AreScene/AreScene.types.js +4 -0
- package/dist/node/lib/AreScene/AreScene.types.js.map +1 -0
- package/dist/node/lib/AreScene/AreScene.types.mjs +3 -0
- package/dist/node/lib/AreScene/AreScene.types.mjs.map +1 -0
- package/dist/node/lib/AreScene/index.d.mts +9 -0
- package/dist/node/lib/AreScene/index.d.ts +9 -0
- package/dist/node/lib/AreScene/index.js +24 -0
- package/dist/node/lib/AreScene/index.js.map +1 -0
- package/dist/node/lib/AreScene/index.mjs +6 -0
- package/dist/node/lib/AreScene/index.mjs.map +1 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.d.mts +7 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.d.ts +7 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.js +12 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.js.map +1 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.mjs +12 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.constants.mjs.map +1 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.d.mts +8 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.d.ts +8 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.js +95 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.js.map +1 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.mjs +94 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.entity.mjs.map +1 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.d.mts +8 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.d.ts +8 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.js +4 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.js.map +1 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.mjs +3 -0
- package/dist/node/lib/AreSceneInstruction/AreSceneInstruction.types.mjs.map +1 -0
- package/dist/node/lib/AreSceneInstruction/index.d.mts +19 -0
- package/dist/node/lib/AreSceneInstruction/index.d.ts +19 -0
- package/dist/node/lib/AreSceneInstruction/index.js +33 -0
- package/dist/node/lib/AreSceneInstruction/index.js.map +1 -0
- package/dist/node/lib/AreSceneInstruction/index.mjs +7 -0
- package/dist/node/lib/AreSceneInstruction/index.mjs.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.d.mts +19 -0
- package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.d.ts +19 -0
- package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.js +27 -0
- package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.js.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.mjs +26 -0
- package/dist/node/lib/AreSceneInstruction/types/AddAttribute.instruction.mjs.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.d.mts +20 -0
- package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.d.ts +20 -0
- package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.js +27 -0
- package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.js.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.mjs +26 -0
- package/dist/node/lib/AreSceneInstruction/types/AddDirective.instruction.mjs.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.d.mts +17 -0
- package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.d.ts +17 -0
- package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.js +23 -0
- package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.js.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.mjs +22 -0
- package/dist/node/lib/AreSceneInstruction/types/AddStyle.instruction.mjs.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.d.mts +19 -0
- package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.d.ts +19 -0
- package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.js +27 -0
- package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.js.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.mjs +26 -0
- package/dist/node/lib/AreSceneInstruction/types/AddStyleProperty.instruction.mjs.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.d.mts +23 -0
- package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.d.ts +23 -0
- package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.js +41 -0
- package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.js.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.mjs +40 -0
- package/dist/node/lib/AreSceneInstruction/types/AttachListener.instruction.mjs.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.d.mts +15 -0
- package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.d.ts +15 -0
- package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.js +21 -0
- package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.js.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.mjs +20 -0
- package/dist/node/lib/AreSceneInstruction/types/AttachRootNode.instruction.mjs.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.d.mts +17 -0
- package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.d.ts +17 -0
- package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.js +23 -0
- package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.js.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.mjs +22 -0
- package/dist/node/lib/AreSceneInstruction/types/MountNode.instruction.mjs.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.d.mts +23 -0
- package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.d.ts +23 -0
- package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.js +34 -0
- package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.js.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.mjs +33 -0
- package/dist/node/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.mjs.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.d.mts +16 -0
- package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.d.ts +16 -0
- package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.js +20 -0
- package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.js.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.mjs +19 -0
- package/dist/node/lib/AreSceneInstruction/types/UnmountNode.instruction.mjs.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/index.d.mts +18 -0
- package/dist/node/lib/AreSceneInstruction/types/index.d.ts +18 -0
- package/dist/node/lib/AreSceneInstruction/types/index.js +52 -0
- package/dist/node/lib/AreSceneInstruction/types/index.js.map +1 -0
- package/dist/node/lib/AreSceneInstruction/types/index.mjs +12 -0
- package/dist/node/lib/AreSceneInstruction/types/index.mjs.map +1 -0
- package/dist/node/lib/AreSlot/AreSlot.component.d.mts +8 -0
- package/dist/node/lib/AreSlot/AreSlot.component.d.ts +8 -0
- package/dist/node/lib/AreSlot/AreSlot.component.js +37 -0
- package/dist/node/lib/AreSlot/AreSlot.component.js.map +1 -0
- package/dist/node/lib/AreSlot/AreSlot.component.mjs +36 -0
- package/dist/node/lib/AreSlot/AreSlot.component.mjs.map +1 -0
- package/dist/node/lib/AreStore/AreStore.context.d.mts +10 -0
- package/dist/node/lib/AreStore/AreStore.context.d.ts +10 -0
- package/dist/node/lib/AreStore/AreStore.context.js +35 -0
- package/dist/node/lib/AreStore/AreStore.context.js.map +1 -0
- package/dist/node/lib/AreStore/AreStore.context.mjs +28 -0
- package/dist/node/lib/AreStore/AreStore.context.mjs.map +1 -0
- package/dist/node/lib/AreStore/index.d.mts +3 -0
- package/dist/node/lib/AreStore/index.d.ts +3 -0
- package/dist/node/lib/AreStore/index.js +12 -0
- package/dist/node/lib/AreStore/index.js.map +1 -0
- package/dist/node/lib/AreStore/index.mjs +4 -0
- package/dist/node/lib/AreStore/index.mjs.map +1 -0
- package/dist/node/lib/AreSyntax/AreSyntax.component.d.mts +89 -0
- package/dist/node/lib/AreSyntax/AreSyntax.component.d.ts +89 -0
- package/dist/node/lib/AreSyntax/AreSyntax.component.js +241 -0
- package/dist/node/lib/AreSyntax/AreSyntax.component.js.map +1 -0
- package/dist/node/lib/AreSyntax/AreSyntax.component.mjs +232 -0
- package/dist/node/lib/AreSyntax/AreSyntax.component.mjs.map +1 -0
- package/dist/node/lib/AreSyntax/AreSyntax.context.d.mts +80 -0
- package/dist/node/lib/AreSyntax/AreSyntax.context.d.ts +80 -0
- package/dist/node/lib/AreSyntax/AreSyntax.context.js +117 -0
- package/dist/node/lib/AreSyntax/AreSyntax.context.js.map +1 -0
- package/dist/node/lib/AreSyntax/AreSyntax.context.mjs +110 -0
- package/dist/node/lib/AreSyntax/AreSyntax.context.mjs.map +1 -0
- package/dist/node/lib/AreSyntax/AreSyntax.error.d.mts +9 -0
- package/dist/node/lib/AreSyntax/AreSyntax.error.d.ts +9 -0
- package/dist/node/lib/AreSyntax/AreSyntax.error.js +13 -0
- package/dist/node/lib/AreSyntax/AreSyntax.error.js.map +1 -0
- package/dist/node/lib/AreSyntax/AreSyntax.error.mjs +12 -0
- package/dist/node/lib/AreSyntax/AreSyntax.error.mjs.map +1 -0
- package/dist/node/lib/AreSyntax/AreSyntax.types.d.mts +132 -0
- package/dist/node/lib/AreSyntax/AreSyntax.types.d.ts +132 -0
- package/dist/node/lib/AreSyntax/AreSyntax.types.js +4 -0
- package/dist/node/lib/AreSyntax/AreSyntax.types.js.map +1 -0
- package/dist/node/lib/AreSyntax/AreSyntax.types.mjs +3 -0
- package/dist/node/lib/AreSyntax/AreSyntax.types.mjs.map +1 -0
- package/dist/node/lib/AreSyntax/index.d.mts +12 -0
- package/dist/node/lib/AreSyntax/index.d.ts +12 -0
- package/dist/node/lib/AreSyntax/index.js +29 -0
- package/dist/node/lib/AreSyntax/index.js.map +1 -0
- package/dist/node/lib/AreSyntax/index.mjs +7 -0
- package/dist/node/lib/AreSyntax/index.mjs.map +1 -0
- package/dist/node/signals/AreInit.signal.d.mts +7 -0
- package/dist/node/signals/AreInit.signal.d.ts +7 -0
- package/dist/node/signals/AreInit.signal.js +13 -0
- package/dist/node/signals/AreInit.signal.js.map +1 -0
- package/dist/node/signals/AreInit.signal.mjs +12 -0
- package/dist/node/signals/AreInit.signal.mjs.map +1 -0
- package/dist/node/signals/AreRoute.signal.d.mts +12 -0
- package/dist/node/signals/AreRoute.signal.d.ts +12 -0
- package/dist/node/signals/AreRoute.signal.js +24 -0
- package/dist/node/signals/AreRoute.signal.js.map +1 -0
- package/dist/node/signals/AreRoute.signal.mjs +23 -0
- package/dist/node/signals/AreRoute.signal.mjs.map +1 -0
- package/dist/node/signals/index.d.mts +4 -0
- package/dist/node/signals/index.d.ts +4 -0
- package/dist/node/signals/index.js +17 -0
- package/dist/node/signals/index.js.map +1 -0
- package/dist/node/signals/index.mjs +5 -0
- package/dist/node/signals/index.mjs.map +1 -0
- package/docs/a-logo-docs.png +0 -0
- package/examples/jumpstart/concept.ts +60 -0
- package/examples/jumpstart/containers/UI.container.ts +172 -0
- package/examples/jumpstart/dist/index.html +22 -0
- package/examples/jumpstart/dist/mls3rrlq-lofs95.js +129 -0
- package/examples/jumpstart/dist/static/css/main.css +40 -0
- package/examples/jumpstart/dist/static/img/test.png +0 -0
- package/examples/jumpstart/public/index.html +22 -0
- package/examples/jumpstart/public/static/css/main.css +40 -0
- package/examples/jumpstart/public/static/img/test.png +0 -0
- package/examples/jumpstart/src/components/A-Btn.component.ts +124 -0
- package/examples/jumpstart/src/components/A-Input.component.ts +78 -0
- package/examples/jumpstart/src/components/A-Navigation.component.ts +167 -0
- package/examples/jumpstart/src/components/SignInComponent.component.ts +127 -0
- package/examples/jumpstart/src/concept.ts +92 -0
- package/jest.config.ts +26 -0
- package/package.json +92 -0
- package/src/engines/html/AreHTML.compiler.ts +657 -0
- package/src/engines/html/AreHTML.engine.ts +62 -0
- package/src/engines/html/index.ts +2 -0
- package/src/engines/json/AreJSON.compiler.ts +13 -0
- package/src/index.ts +15 -0
- package/src/lib/AreApp/AreApp.container.ts +77 -0
- package/src/lib/AreApp/AreApp.env.ts +0 -0
- package/src/lib/AreApp/AreApp.error.ts +7 -0
- package/src/lib/AreApp/AreApp.types.ts +0 -0
- package/src/lib/AreApp/index.ts +4 -0
- package/src/lib/AreCompiler/AreCompiler.component.ts +1023 -0
- package/src/lib/AreCompiler/AreCompiler.error.ts +9 -0
- package/src/lib/AreCompiler/AreCompiler.types.ts +0 -0
- package/src/lib/AreCompiler/index.ts +3 -0
- package/src/lib/AreComponent/Are.component.ts +203 -0
- package/src/lib/AreComponent/Are.constants.ts +39 -0
- package/src/lib/AreComponent/Are.context.ts +43 -0
- package/src/lib/AreComponent/Are.types.ts +0 -0
- package/src/lib/AreComponent/index.ts +4 -0
- package/src/lib/AreEvent/AreEvent.context.ts +38 -0
- package/src/lib/AreEvent/AreEvent.types.ts +16 -0
- package/src/lib/AreEvent/index.ts +2 -0
- package/src/lib/AreIndex/AreIndex.context.ts +174 -0
- package/src/lib/AreIndex/index.ts +1 -0
- package/src/lib/AreNode/AreNode.constants.ts +37 -0
- package/src/lib/AreNode/AreNode.entity.ts +249 -0
- package/src/lib/AreNode/AreNode.error.ts +0 -0
- package/src/lib/AreNode/AreNode.types.ts +15 -0
- package/src/lib/AreNode/index.ts +4 -0
- package/src/lib/AreProps/AreProps.context.ts +26 -0
- package/src/lib/AreProps/index.ts +1 -0
- package/src/lib/AreRoot/AreRoot.component.ts +54 -0
- package/src/lib/AreRoot/index.ts +1 -0
- package/src/lib/AreRouter/AreRouter.componeent.ts +24 -0
- package/src/lib/AreRouter/index.ts +1 -0
- package/src/lib/AreScene/AreScene.context.ts +382 -0
- package/src/lib/AreScene/AreScene.error.ts +22 -0
- package/src/lib/AreScene/AreScene.types.ts +7 -0
- package/src/lib/AreScene/index.ts +3 -0
- package/src/lib/AreSceneInstruction/AreSceneInstruction.constants.ts +7 -0
- package/src/lib/AreSceneInstruction/AreSceneInstruction.entity.ts +156 -0
- package/src/lib/AreSceneInstruction/AreSceneInstruction.types.ts +8 -0
- package/src/lib/AreSceneInstruction/index.ts +4 -0
- package/src/lib/AreSceneInstruction/types/AddAttribute.instruction.ts +34 -0
- package/src/lib/AreSceneInstruction/types/AddDirective.instruction.ts +36 -0
- package/src/lib/AreSceneInstruction/types/AddStyle.instruction.ts +26 -0
- package/src/lib/AreSceneInstruction/types/AddStyleProperty.instruction.ts +32 -0
- package/src/lib/AreSceneInstruction/types/AttachListener.instruction.ts +57 -0
- package/src/lib/AreSceneInstruction/types/AttachRootNode.instruction.ts +23 -0
- package/src/lib/AreSceneInstruction/types/MountNode.instruction.ts +29 -0
- package/src/lib/AreSceneInstruction/types/ReplaceInterpolation.instruction.ts +45 -0
- package/src/lib/AreSceneInstruction/types/UnmountNode.instruction.ts +22 -0
- package/src/lib/AreSceneInstruction/types/index.ts +10 -0
- package/src/lib/AreSlot/AreSlot.component.ts +48 -0
- package/src/lib/AreStore/AreStore.context.ts +36 -0
- package/src/lib/AreStore/index.ts +1 -0
- package/src/lib/AreSyntax/AreSyntax.component.ts +378 -0
- package/src/lib/AreSyntax/AreSyntax.context.ts +114 -0
- package/src/lib/AreSyntax/AreSyntax.error.ts +11 -0
- package/src/lib/AreSyntax/AreSyntax.types.ts +156 -0
- package/src/lib/AreSyntax/index.ts +4 -0
- package/src/signals/AreInit.signal.ts +7 -0
- package/src/signals/AreRoute.signal.ts +25 -0
- package/src/signals/index.ts +2 -0
- package/tests/A-HttpChannel.test.ts +204 -0
- package/tests/A-HttpServerError.test.ts +204 -0
- package/tests/A-Request.test.ts +742 -0
- package/tests/A-Service.test.ts +18 -0
- package/tsconfig.json +68 -0
- package/tslint.json +98 -0
- package/tsup.config.ts +78 -0
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var aConcept = require('@adaas/a-concept');
|
|
4
|
+
var aFrame = require('@adaas/a-frame');
|
|
5
|
+
var AreSyntax_context = require('./AreSyntax.context');
|
|
6
|
+
var node = require('@adaas/are/node');
|
|
7
|
+
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
11
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
12
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
13
|
+
if (decorator = decorators[i])
|
|
14
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
15
|
+
if (kind && result) __defProp(target, key, result);
|
|
16
|
+
return result;
|
|
17
|
+
};
|
|
18
|
+
exports.AreSyntax = class AreSyntax extends aConcept.A_Component {
|
|
19
|
+
get config() {
|
|
20
|
+
return aConcept.A_Context.scope(this).resolveFlat(AreSyntax_context.AreSyntaxContext);
|
|
21
|
+
}
|
|
22
|
+
isRootNode(node) {
|
|
23
|
+
return node.aseid.entity.toLowerCase() === this.config.rootTag;
|
|
24
|
+
}
|
|
25
|
+
isCustomNode(node) {
|
|
26
|
+
return !this.config.standardTags.has(node.aseid.entity.toLowerCase());
|
|
27
|
+
}
|
|
28
|
+
extractRoots(template) {
|
|
29
|
+
const rootTag = this.config.rootTag;
|
|
30
|
+
const rootTagRegex = new RegExp(`<${rootTag}([\\s>])`, "gi");
|
|
31
|
+
let match;
|
|
32
|
+
const nodes = [];
|
|
33
|
+
while ((match = rootTagRegex.exec(template)) !== null) {
|
|
34
|
+
const startIndex = match.index;
|
|
35
|
+
const endTag = `</${rootTag}>`;
|
|
36
|
+
const endIndex = template.indexOf(endTag, startIndex);
|
|
37
|
+
if (endIndex === -1) {
|
|
38
|
+
throw new aConcept.A_Error(`Missing closing tag for <${rootTag}> starting at index ${startIndex}`);
|
|
39
|
+
}
|
|
40
|
+
const attributes = this.extractAttributes(template.slice(startIndex, endIndex + endTag.length));
|
|
41
|
+
let rootId = `auto-root-${startIndex}`;
|
|
42
|
+
for (let i = 0; i < attributes.length; i++) {
|
|
43
|
+
if (attributes[i].name === "id") {
|
|
44
|
+
rootId = attributes[i].value;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const markup = template.slice(startIndex, endIndex + endTag.length);
|
|
49
|
+
const content = markup.slice(rootTag.length + 2, -endTag.length).trim();
|
|
50
|
+
const node$1 = new node.AreNode({
|
|
51
|
+
id: rootId,
|
|
52
|
+
scope: "are",
|
|
53
|
+
component: "are-root",
|
|
54
|
+
markup,
|
|
55
|
+
template: content
|
|
56
|
+
});
|
|
57
|
+
nodes.push(node$1);
|
|
58
|
+
}
|
|
59
|
+
return nodes;
|
|
60
|
+
}
|
|
61
|
+
extractInterpolations(template) {
|
|
62
|
+
const interpolationRegex = new RegExp(`${this.config.interpolationDelimiters[0]}\\s*([a-zA-Z0-9_.$]+)\\s*${this.config.interpolationDelimiters[1]}`, "g");
|
|
63
|
+
const interpolations = [];
|
|
64
|
+
let match;
|
|
65
|
+
while ((match = interpolationRegex.exec(template)) !== null) {
|
|
66
|
+
interpolations.push({
|
|
67
|
+
raw: match[0],
|
|
68
|
+
name: match[1],
|
|
69
|
+
position: match.index
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return interpolations;
|
|
73
|
+
}
|
|
74
|
+
extractDirectives(template) {
|
|
75
|
+
const trimmedTemplate = template.trim();
|
|
76
|
+
const firstTagMatch = trimmedTemplate.match(
|
|
77
|
+
/^<([a-zA-Z][^\s/>]*)(\s[^>]*?)?>/
|
|
78
|
+
);
|
|
79
|
+
if (!firstTagMatch) return [];
|
|
80
|
+
const tag = firstTagMatch[1];
|
|
81
|
+
const attributesPart = firstTagMatch[2];
|
|
82
|
+
if (!attributesPart) return [];
|
|
83
|
+
const directiveRegex = new RegExp(
|
|
84
|
+
`\\s+(\\${this.config.directiveDelimiter}[a-zA-Z0-9_-]+)(?:\\s*=\\s*(?:"([^"]*)"|'([^']*)'))?`,
|
|
85
|
+
"g"
|
|
86
|
+
);
|
|
87
|
+
let match;
|
|
88
|
+
const directives = [];
|
|
89
|
+
while ((match = directiveRegex.exec(attributesPart)) !== null) {
|
|
90
|
+
const name = match[1];
|
|
91
|
+
if (this.config.customDirectives && this.config.customDirectives.length > 0 && !this.config.customDirectives.includes(name)) {
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
const raw = match[0];
|
|
95
|
+
const value = match[2] ?? match[3];
|
|
96
|
+
const tagTemplate = firstTagMatch[0];
|
|
97
|
+
directives.push({
|
|
98
|
+
tag,
|
|
99
|
+
name,
|
|
100
|
+
raw,
|
|
101
|
+
value,
|
|
102
|
+
template: tagTemplate
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return directives;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Extracts component props from the FIRST opening tag.
|
|
109
|
+
*
|
|
110
|
+
* Examples:
|
|
111
|
+
* label="Click"
|
|
112
|
+
* :label="'Click Me'"
|
|
113
|
+
*
|
|
114
|
+
* Excludes:
|
|
115
|
+
* @click
|
|
116
|
+
* $if
|
|
117
|
+
*/
|
|
118
|
+
extractAttributes(template) {
|
|
119
|
+
const firstTagMatch = template.match(
|
|
120
|
+
/^<([a-zA-Z][^\s/>]*)(\s[^>]*?)?>/
|
|
121
|
+
);
|
|
122
|
+
if (!firstTagMatch) return [];
|
|
123
|
+
const tag = firstTagMatch[1];
|
|
124
|
+
const attributesPart = firstTagMatch[2];
|
|
125
|
+
if (!attributesPart) return [];
|
|
126
|
+
const propRegex = new RegExp(
|
|
127
|
+
`\\s+(\\${this.config.bindingDelimiter}?)([a-zA-Z][a-zA-Z0-9._-]*)\\s*=\\s*(?:"([^"]*)"|'([^']*)')`,
|
|
128
|
+
"g"
|
|
129
|
+
);
|
|
130
|
+
let match;
|
|
131
|
+
const attributes = [];
|
|
132
|
+
while ((match = propRegex.exec(attributesPart)) !== null) {
|
|
133
|
+
const isBinding = match[1] === this.config.bindingDelimiter;
|
|
134
|
+
const name = match[2];
|
|
135
|
+
if (name.startsWith(this.config.listenerDelimiter) || name.startsWith(this.config.directiveDelimiter)) {
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
const raw = match[0];
|
|
139
|
+
const value = match[3] ?? match[4];
|
|
140
|
+
attributes.push({
|
|
141
|
+
tag,
|
|
142
|
+
name,
|
|
143
|
+
raw,
|
|
144
|
+
value: value || "",
|
|
145
|
+
binding: isBinding
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
return attributes;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Extracts event listeners from the FIRST/TOP-LEVEL opening tag ONLY in the template.
|
|
152
|
+
* Supports:
|
|
153
|
+
* - @event="handler"
|
|
154
|
+
* - @event='handler'
|
|
155
|
+
*
|
|
156
|
+
* Note: This method intentionally ignores nested elements and only processes
|
|
157
|
+
* the very first opening tag in the provided template string.
|
|
158
|
+
*/
|
|
159
|
+
extractListeners(template) {
|
|
160
|
+
const trimmedTemplate = template.trim();
|
|
161
|
+
const firstTagMatch = trimmedTemplate.match(
|
|
162
|
+
/^<([a-zA-Z][^\s/>]*)(\s[^>]*?)?>/
|
|
163
|
+
);
|
|
164
|
+
if (!firstTagMatch) return [];
|
|
165
|
+
const tag = firstTagMatch[1];
|
|
166
|
+
const attributesPart = firstTagMatch[2];
|
|
167
|
+
if (!attributesPart) return [];
|
|
168
|
+
const listenerRegex = new RegExp(
|
|
169
|
+
`\\s+${this.config.listenerDelimiter}([a-zA-Z0-9_:-]+)\\s*=\\s*(?:"([^"]*)"|'([^']*)')`,
|
|
170
|
+
"g"
|
|
171
|
+
);
|
|
172
|
+
let match;
|
|
173
|
+
const listeners = [];
|
|
174
|
+
while ((match = listenerRegex.exec(attributesPart)) !== null) {
|
|
175
|
+
const raw = match[0];
|
|
176
|
+
const name = match[1];
|
|
177
|
+
const handler = match[2] ?? match[3] ?? "";
|
|
178
|
+
listeners.push({
|
|
179
|
+
tag,
|
|
180
|
+
name,
|
|
181
|
+
raw,
|
|
182
|
+
handler
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
return listeners;
|
|
186
|
+
}
|
|
187
|
+
isBindingProp(prop) {
|
|
188
|
+
return prop.raw.trim().startsWith(this.config.bindingDelimiter);
|
|
189
|
+
}
|
|
190
|
+
extractPropValue(prop, parentStore) {
|
|
191
|
+
if (prop.value == null) {
|
|
192
|
+
return void 0;
|
|
193
|
+
}
|
|
194
|
+
if (prop.binding) {
|
|
195
|
+
const value = prop.value.trim();
|
|
196
|
+
if (value.startsWith("'") && value.endsWith("'") || value.startsWith('"') && value.endsWith('"')) {
|
|
197
|
+
return value.slice(1, -1);
|
|
198
|
+
}
|
|
199
|
+
return parentStore?.get(value);
|
|
200
|
+
}
|
|
201
|
+
return prop.value;
|
|
202
|
+
}
|
|
203
|
+
replaceInterpolation(template, interpolation, value) {
|
|
204
|
+
const key = typeof interpolation === "string" ? interpolation : interpolation.name;
|
|
205
|
+
return template.replace(new RegExp(`${this.config.interpolationDelimiters[0]}\\s*${key}\\s*${this.config.interpolationDelimiters[1]}`, "g"), value !== void 0 ? String(value) : "");
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
__decorateClass([
|
|
209
|
+
aFrame.A_Frame.Method({
|
|
210
|
+
description: "Determines if a given AreNode is a root node based on its entity type."
|
|
211
|
+
})
|
|
212
|
+
], exports.AreSyntax.prototype, "isRootNode", 1);
|
|
213
|
+
__decorateClass([
|
|
214
|
+
aFrame.A_Frame.Method({
|
|
215
|
+
description: "Determines if a given AreNode represents a custom component as opposed to a standard HTML tag."
|
|
216
|
+
})
|
|
217
|
+
], exports.AreSyntax.prototype, "isCustomNode", 1);
|
|
218
|
+
__decorateClass([
|
|
219
|
+
aFrame.A_Frame.Method({
|
|
220
|
+
description: "Extracts root AreNode elements from the document based on the configured root tag."
|
|
221
|
+
})
|
|
222
|
+
], exports.AreSyntax.prototype, "extractRoots", 1);
|
|
223
|
+
__decorateClass([
|
|
224
|
+
aFrame.A_Frame.Method({
|
|
225
|
+
description: "Extracts interpolations from a template string based on the configured interpolation delimiters."
|
|
226
|
+
})
|
|
227
|
+
], exports.AreSyntax.prototype, "extractInterpolations", 1);
|
|
228
|
+
__decorateClass([
|
|
229
|
+
aFrame.A_Frame.Method({
|
|
230
|
+
description: "Extracts custom directives from the first opening tag of a template string."
|
|
231
|
+
})
|
|
232
|
+
], exports.AreSyntax.prototype, "extractDirectives", 1);
|
|
233
|
+
exports.AreSyntax = __decorateClass([
|
|
234
|
+
aFrame.A_Frame.Component({
|
|
235
|
+
namespace: "A-ARE",
|
|
236
|
+
name: "AreSyntax",
|
|
237
|
+
description: "Context component that defines the syntax rules and structures for the A-Concept Rendering Engine (ARE). It provides mechanisms for parsing and interpreting templates, attributes, directives, interpolations, and event listeners, enabling dynamic and interactive UI rendering within the ARE framework."
|
|
238
|
+
})
|
|
239
|
+
], exports.AreSyntax);
|
|
240
|
+
//# sourceMappingURL=AreSyntax.component.js.map
|
|
241
|
+
//# sourceMappingURL=AreSyntax.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/AreSyntax/AreSyntax.component.ts"],"names":["AreSyntax","A_Component","A_Context","AreSyntaxContext","A_Error","node","AreNode","A_Frame"],"mappings":"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","file":"AreSyntax.component.js","sourcesContent":["import { A_Component, A_Context, A_Error } from \"@adaas/a-concept\";\nimport { A_Frame } from \"@adaas/a-frame\";\nimport { AreDirective, AreInterpolation, AreAttribute, AreListener } from \"./AreSyntax.types\";\nimport { AreSyntaxContext } from \"./AreSyntax.context\";\nimport { AreNode } from \"@adaas/are/node\";\nimport type { AreStore } from \"@adaas/are/store\";\n\n\n@A_Frame.Component({\n namespace: 'A-ARE',\n name: 'AreSyntax',\n description: 'Context component that defines the syntax rules and structures for the A-Concept Rendering Engine (ARE). It provides mechanisms for parsing and interpreting templates, attributes, directives, interpolations, and event listeners, enabling dynamic and interactive UI rendering within the ARE framework.'\n})\nexport class AreSyntax extends A_Component {\n\n\n get config(): AreSyntaxContext {\n return A_Context.scope(this).resolveFlat<AreSyntaxContext>(AreSyntaxContext)!;\n }\n\n\n /**\n * Determines if a tag is a root node\n * \n * @param node \n * @returns \n */\n @A_Frame.Method({\n description: 'Determines if a given AreNode is a root node based on its entity type.'\n })\n isRootNode(node: AreNode): boolean {\n return node.aseid.entity.toLowerCase() === this.config.rootTag;\n }\n\n /**\n * Determines if a tag is a custom component or standard HTML\n * \n * @param node \n * @returns \n */\n @A_Frame.Method({\n description: 'Determines if a given AreNode represents a custom component as opposed to a standard HTML tag.'\n })\n isCustomNode(node: AreNode): boolean {\n return !this.config.standardTags.has(node.aseid.entity.toLowerCase());\n }\n\n\n /**\n * Extracts root AreNode elements from the document based on the configured root tag.\n * \n * @returns An iterable of AreNode instances representing the root elements.\n */\n @A_Frame.Method({\n description: 'Extracts root AreNode elements from the document based on the configured root tag.'\n })\n extractRoots(template: string): AreNode[] {\n const rootTag = this.config.rootTag;\n const rootTagRegex = new RegExp(`<${rootTag}([\\\\s>])`, 'gi');\n let match: RegExpExecArray | null;\n const nodes: AreNode[] = [];\n\n while ((match = rootTagRegex.exec(template)) !== null) {\n const startIndex = match.index;\n const endTag = `</${rootTag}>`;\n const endIndex = template.indexOf(endTag, startIndex);\n\n if (endIndex === -1) {\n throw new A_Error(`Missing closing tag for <${rootTag}> starting at index ${startIndex}`);\n }\n\n const attributes = this.extractAttributes(template.slice(startIndex, endIndex + endTag.length));\n let rootId = `auto-root-${startIndex}`;\n \n for (let i = 0; i < attributes.length; i++) {\n if (attributes[i].name === 'id') {\n rootId = attributes[i].value;\n break;\n }\n }\n\n const markup = template.slice(startIndex, endIndex + endTag.length);\n const content = markup.slice(rootTag.length + 2, -endTag.length).trim();\n \n\n const node = new AreNode({\n id: rootId,\n scope: 'are',\n component: 'are-root',\n markup: markup,\n template: content,\n });\n\n nodes.push(node);\n }\n \n return nodes;\n }\n\n\n /**\n * Extracts interpolations from template (syntax-agnostic).\n * \n * Simply finds all interpolation patterns and returns their position, raw text, and name.\n * Works with any template format - HTML, plain text, or any other syntax.\n * \n * Example: `Hello {{name}}, welcome to {{place}}!`\n * Returns: [\n * { raw: \"{{name}}\", name: \"name\", position: 6 },\n * { raw: \"{{place}}\", name: \"place\", position: 26 }\n * ]\n * \n * @param template - Template string in any format\n */\n @A_Frame.Method({\n description: 'Extracts interpolations from a template string based on the configured interpolation delimiters.'\n })\n extractInterpolations(template: string): AreInterpolation[] {\n const interpolationRegex = new RegExp(`${this.config.interpolationDelimiters[0]}\\\\s*([a-zA-Z0-9_.$]+)\\\\s*${this.config.interpolationDelimiters[1]}`, 'g');\n const interpolations: AreInterpolation[] = [];\n\n let match: RegExpExecArray | null;\n while ((match = interpolationRegex.exec(template)) !== null) {\n interpolations.push({\n raw: match[0],\n name: match[1],\n position: match.index!\n });\n }\n \n return interpolations;\n }\n\n /**\n * Extracts custom directives from the FIRST/TOP-LEVEL opening tag ONLY.\n * Directives start with `$`\n *\n * Examples:\n * $if=\"condition\"\n * $show\n * $no-update=\"\"\n * \n * Note: This method intentionally ignores nested elements and only processes\n * the very first opening tag in the provided template string.\n */\n @A_Frame.Method({\n description: 'Extracts custom directives from the first opening tag of a template string.'\n })\n extractDirectives(template: string): AreDirective[] {\n // Trim whitespace to ensure we start at the actual first tag\n const trimmedTemplate = template.trim();\n\n // Match ONLY the very first opening tag (anchored with ^)\n const firstTagMatch = trimmedTemplate.match(\n /^<([a-zA-Z][^\\s/>]*)(\\s[^>]*?)?>/\n );\n\n if (!firstTagMatch) return [];\n\n const tag = firstTagMatch[1];\n const attributesPart = firstTagMatch[2];\n\n // If no attributes, no directives possible\n if (!attributesPart) return [];\n\n /**\n * Extract directives from the first tag's attributes only.\n * Matches patterns like:\n * $if=\"condition\"\n * $show\n * $no-update=\"\"\n */\n const directiveRegex = new RegExp(\n `\\\\s+(\\\\${this.config.directiveDelimiter}[a-zA-Z0-9_-]+)(?:\\\\s*=\\\\s*(?:\"([^\"]*)\"|'([^']*)'))?`,\n 'g'\n );\n\n let match: RegExpExecArray | null;\n const directives: AreDirective[] = [];\n\n while ((match = directiveRegex.exec(attributesPart)) !== null) {\n const name = match[1];\n\n // Optional whitelist support - only apply if whitelist is explicitly provided\n if (\n this.config.customDirectives &&\n this.config.customDirectives.length > 0 &&\n !this.config.customDirectives.includes(name)\n ) {\n continue;\n }\n\n const raw = match[0];\n const value = match[2] ?? match[3];\n const tagTemplate = firstTagMatch[0]; // Only the first tag\n\n directives.push({\n tag,\n name,\n raw,\n value,\n template: tagTemplate\n });\n }\n \n return directives;\n }\n\n\n /**\n * Extracts component props from the FIRST opening tag.\n *\n * Examples:\n * label=\"Click\"\n * :label=\"'Click Me'\"\n *\n * Excludes:\n * @click\n * $if\n */\n extractAttributes(template: string): AreAttribute[] {\n // Match first opening tag\n const firstTagMatch = template.match(\n /^<([a-zA-Z][^\\s/>]*)(\\s[^>]*?)?>/\n );\n\n if (!firstTagMatch) return [];\n\n const tag = firstTagMatch[1];\n const attributesPart = firstTagMatch[2];\n\n if (!attributesPart) return [];\n\n /**\n * Matches:\n * label=\"text\"\n * :label=\"'Click'\"\n *\n * Skips:\n * @click\n * $if\n */\n const propRegex = new RegExp(\n `\\\\s+(\\\\${this.config.bindingDelimiter}?)([a-zA-Z][a-zA-Z0-9._-]*)\\\\s*=\\\\s*(?:\"([^\"]*)\"|'([^']*)')`,\n 'g'\n );\n\n let match: RegExpExecArray | null;\n const attributes: AreAttribute[] = [];\n\n while ((match = propRegex.exec(attributesPart)) !== null) {\n const isBinding = match[1] === this.config.bindingDelimiter;\n const name = match[2];\n\n // Exclude listeners & directives explicitly\n if (\n name.startsWith(this.config.listenerDelimiter) ||\n name.startsWith(this.config.directiveDelimiter)\n ) {\n continue;\n }\n\n const raw = match[0];\n const value = match[3] ?? match[4];\n\n attributes.push({\n tag,\n name,\n raw,\n value: value || '',\n binding: isBinding\n });\n }\n \n return attributes;\n }\n\n\n /**\n * Extracts event listeners from the FIRST/TOP-LEVEL opening tag ONLY in the template.\n * Supports:\n * - @event=\"handler\"\n * - @event='handler'\n * \n * Note: This method intentionally ignores nested elements and only processes\n * the very first opening tag in the provided template string.\n */\n extractListeners(template: string): AreListener[] {\n // Trim whitespace to ensure we start at the actual first tag\n const trimmedTemplate = template.trim();\n\n // Match ONLY the very first opening tag (anchored with ^)\n const firstTagMatch = trimmedTemplate.match(\n /^<([a-zA-Z][^\\s/>]*)(\\s[^>]*?)?>/\n );\n\n if (!firstTagMatch) return [];\n\n const tag = firstTagMatch[1];\n const attributesPart = firstTagMatch[2];\n\n // If no attributes, no listeners possible\n if (!attributesPart) return [];\n\n /**\n * Extract listeners from the first tag's attributes only.\n * Match listener attributes:\n * @input=\"onChange\"\n * @change='handleChange'\n */\n const listenerRegex = new RegExp(\n `\\\\s+${this.config.listenerDelimiter}([a-zA-Z0-9_:-]+)` +\n `\\\\s*=\\\\s*(?:\"([^\"]*)\"|'([^']*)')`,\n 'g'\n );\n\n let match: RegExpExecArray | null;\n const listeners: AreListener[] = [];\n\n while ((match = listenerRegex.exec(attributesPart)) !== null) {\n const raw = match[0];\n const name = match[1];\n const handler = match[2] ?? match[3] ?? \"\";\n\n listeners.push({\n tag,\n name,\n raw,\n handler\n });\n }\n \n return listeners;\n }\n\n\n\n isBindingProp(prop: AreAttribute): boolean {\n return prop.raw.trim().startsWith(this.config.bindingDelimiter)\n }\n\n\n extractPropValue(prop: AreAttribute, parentStore: AreStore): any {\n\n if (prop.value == null) {\n return undefined;\n }\n\n // Binding prop (starts with :)\n if (prop.binding) {\n const value = prop.value.trim();\n\n // Static literal binding: :label=\"'Click'\" or :\"Click\"\n if (\n (value.startsWith(\"'\") && value.endsWith(\"'\")) ||\n (value.startsWith('\"') && value.endsWith('\"'))\n ) {\n return value.slice(1, -1);\n }\n\n // Dynamic binding: :label=\"someKey\"\n // (future: expressions, paths, computed, etc.)\n return parentStore?.get(value);\n }\n\n // Static prop: label=\"Click\"\n return prop.value;\n }\n\n\n replaceInterpolation(template: string, interpolation: AreInterpolation | string, value: any): string {\n const key = typeof interpolation === 'string' ? interpolation : interpolation.name;\n\n return template.replace(new RegExp(`${this.config.interpolationDelimiters[0]}\\\\s*${key}\\\\s*${this.config.interpolationDelimiters[1]}`, 'g'), value !== undefined ? String(value) : '');\n }\n\n\n}"]}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { __decorateClass } from '../../chunk-EQQGB2QZ.mjs';
|
|
2
|
+
import { A_Component, A_Context, A_Error } from '@adaas/a-concept';
|
|
3
|
+
import { A_Frame } from '@adaas/a-frame';
|
|
4
|
+
import { AreSyntaxContext } from './AreSyntax.context';
|
|
5
|
+
import { AreNode } from '@adaas/are/node';
|
|
6
|
+
|
|
7
|
+
let AreSyntax = class extends A_Component {
|
|
8
|
+
get config() {
|
|
9
|
+
return A_Context.scope(this).resolveFlat(AreSyntaxContext);
|
|
10
|
+
}
|
|
11
|
+
isRootNode(node) {
|
|
12
|
+
return node.aseid.entity.toLowerCase() === this.config.rootTag;
|
|
13
|
+
}
|
|
14
|
+
isCustomNode(node) {
|
|
15
|
+
return !this.config.standardTags.has(node.aseid.entity.toLowerCase());
|
|
16
|
+
}
|
|
17
|
+
extractRoots(template) {
|
|
18
|
+
const rootTag = this.config.rootTag;
|
|
19
|
+
const rootTagRegex = new RegExp(`<${rootTag}([\\s>])`, "gi");
|
|
20
|
+
let match;
|
|
21
|
+
const nodes = [];
|
|
22
|
+
while ((match = rootTagRegex.exec(template)) !== null) {
|
|
23
|
+
const startIndex = match.index;
|
|
24
|
+
const endTag = `</${rootTag}>`;
|
|
25
|
+
const endIndex = template.indexOf(endTag, startIndex);
|
|
26
|
+
if (endIndex === -1) {
|
|
27
|
+
throw new A_Error(`Missing closing tag for <${rootTag}> starting at index ${startIndex}`);
|
|
28
|
+
}
|
|
29
|
+
const attributes = this.extractAttributes(template.slice(startIndex, endIndex + endTag.length));
|
|
30
|
+
let rootId = `auto-root-${startIndex}`;
|
|
31
|
+
for (let i = 0; i < attributes.length; i++) {
|
|
32
|
+
if (attributes[i].name === "id") {
|
|
33
|
+
rootId = attributes[i].value;
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const markup = template.slice(startIndex, endIndex + endTag.length);
|
|
38
|
+
const content = markup.slice(rootTag.length + 2, -endTag.length).trim();
|
|
39
|
+
const node = new AreNode({
|
|
40
|
+
id: rootId,
|
|
41
|
+
scope: "are",
|
|
42
|
+
component: "are-root",
|
|
43
|
+
markup,
|
|
44
|
+
template: content
|
|
45
|
+
});
|
|
46
|
+
nodes.push(node);
|
|
47
|
+
}
|
|
48
|
+
return nodes;
|
|
49
|
+
}
|
|
50
|
+
extractInterpolations(template) {
|
|
51
|
+
const interpolationRegex = new RegExp(`${this.config.interpolationDelimiters[0]}\\s*([a-zA-Z0-9_.$]+)\\s*${this.config.interpolationDelimiters[1]}`, "g");
|
|
52
|
+
const interpolations = [];
|
|
53
|
+
let match;
|
|
54
|
+
while ((match = interpolationRegex.exec(template)) !== null) {
|
|
55
|
+
interpolations.push({
|
|
56
|
+
raw: match[0],
|
|
57
|
+
name: match[1],
|
|
58
|
+
position: match.index
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return interpolations;
|
|
62
|
+
}
|
|
63
|
+
extractDirectives(template) {
|
|
64
|
+
const trimmedTemplate = template.trim();
|
|
65
|
+
const firstTagMatch = trimmedTemplate.match(
|
|
66
|
+
/^<([a-zA-Z][^\s/>]*)(\s[^>]*?)?>/
|
|
67
|
+
);
|
|
68
|
+
if (!firstTagMatch) return [];
|
|
69
|
+
const tag = firstTagMatch[1];
|
|
70
|
+
const attributesPart = firstTagMatch[2];
|
|
71
|
+
if (!attributesPart) return [];
|
|
72
|
+
const directiveRegex = new RegExp(
|
|
73
|
+
`\\s+(\\${this.config.directiveDelimiter}[a-zA-Z0-9_-]+)(?:\\s*=\\s*(?:"([^"]*)"|'([^']*)'))?`,
|
|
74
|
+
"g"
|
|
75
|
+
);
|
|
76
|
+
let match;
|
|
77
|
+
const directives = [];
|
|
78
|
+
while ((match = directiveRegex.exec(attributesPart)) !== null) {
|
|
79
|
+
const name = match[1];
|
|
80
|
+
if (this.config.customDirectives && this.config.customDirectives.length > 0 && !this.config.customDirectives.includes(name)) {
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
const raw = match[0];
|
|
84
|
+
const value = match[2] ?? match[3];
|
|
85
|
+
const tagTemplate = firstTagMatch[0];
|
|
86
|
+
directives.push({
|
|
87
|
+
tag,
|
|
88
|
+
name,
|
|
89
|
+
raw,
|
|
90
|
+
value,
|
|
91
|
+
template: tagTemplate
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
return directives;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Extracts component props from the FIRST opening tag.
|
|
98
|
+
*
|
|
99
|
+
* Examples:
|
|
100
|
+
* label="Click"
|
|
101
|
+
* :label="'Click Me'"
|
|
102
|
+
*
|
|
103
|
+
* Excludes:
|
|
104
|
+
* @click
|
|
105
|
+
* $if
|
|
106
|
+
*/
|
|
107
|
+
extractAttributes(template) {
|
|
108
|
+
const firstTagMatch = template.match(
|
|
109
|
+
/^<([a-zA-Z][^\s/>]*)(\s[^>]*?)?>/
|
|
110
|
+
);
|
|
111
|
+
if (!firstTagMatch) return [];
|
|
112
|
+
const tag = firstTagMatch[1];
|
|
113
|
+
const attributesPart = firstTagMatch[2];
|
|
114
|
+
if (!attributesPart) return [];
|
|
115
|
+
const propRegex = new RegExp(
|
|
116
|
+
`\\s+(\\${this.config.bindingDelimiter}?)([a-zA-Z][a-zA-Z0-9._-]*)\\s*=\\s*(?:"([^"]*)"|'([^']*)')`,
|
|
117
|
+
"g"
|
|
118
|
+
);
|
|
119
|
+
let match;
|
|
120
|
+
const attributes = [];
|
|
121
|
+
while ((match = propRegex.exec(attributesPart)) !== null) {
|
|
122
|
+
const isBinding = match[1] === this.config.bindingDelimiter;
|
|
123
|
+
const name = match[2];
|
|
124
|
+
if (name.startsWith(this.config.listenerDelimiter) || name.startsWith(this.config.directiveDelimiter)) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
const raw = match[0];
|
|
128
|
+
const value = match[3] ?? match[4];
|
|
129
|
+
attributes.push({
|
|
130
|
+
tag,
|
|
131
|
+
name,
|
|
132
|
+
raw,
|
|
133
|
+
value: value || "",
|
|
134
|
+
binding: isBinding
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
return attributes;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Extracts event listeners from the FIRST/TOP-LEVEL opening tag ONLY in the template.
|
|
141
|
+
* Supports:
|
|
142
|
+
* - @event="handler"
|
|
143
|
+
* - @event='handler'
|
|
144
|
+
*
|
|
145
|
+
* Note: This method intentionally ignores nested elements and only processes
|
|
146
|
+
* the very first opening tag in the provided template string.
|
|
147
|
+
*/
|
|
148
|
+
extractListeners(template) {
|
|
149
|
+
const trimmedTemplate = template.trim();
|
|
150
|
+
const firstTagMatch = trimmedTemplate.match(
|
|
151
|
+
/^<([a-zA-Z][^\s/>]*)(\s[^>]*?)?>/
|
|
152
|
+
);
|
|
153
|
+
if (!firstTagMatch) return [];
|
|
154
|
+
const tag = firstTagMatch[1];
|
|
155
|
+
const attributesPart = firstTagMatch[2];
|
|
156
|
+
if (!attributesPart) return [];
|
|
157
|
+
const listenerRegex = new RegExp(
|
|
158
|
+
`\\s+${this.config.listenerDelimiter}([a-zA-Z0-9_:-]+)\\s*=\\s*(?:"([^"]*)"|'([^']*)')`,
|
|
159
|
+
"g"
|
|
160
|
+
);
|
|
161
|
+
let match;
|
|
162
|
+
const listeners = [];
|
|
163
|
+
while ((match = listenerRegex.exec(attributesPart)) !== null) {
|
|
164
|
+
const raw = match[0];
|
|
165
|
+
const name = match[1];
|
|
166
|
+
const handler = match[2] ?? match[3] ?? "";
|
|
167
|
+
listeners.push({
|
|
168
|
+
tag,
|
|
169
|
+
name,
|
|
170
|
+
raw,
|
|
171
|
+
handler
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
return listeners;
|
|
175
|
+
}
|
|
176
|
+
isBindingProp(prop) {
|
|
177
|
+
return prop.raw.trim().startsWith(this.config.bindingDelimiter);
|
|
178
|
+
}
|
|
179
|
+
extractPropValue(prop, parentStore) {
|
|
180
|
+
if (prop.value == null) {
|
|
181
|
+
return void 0;
|
|
182
|
+
}
|
|
183
|
+
if (prop.binding) {
|
|
184
|
+
const value = prop.value.trim();
|
|
185
|
+
if (value.startsWith("'") && value.endsWith("'") || value.startsWith('"') && value.endsWith('"')) {
|
|
186
|
+
return value.slice(1, -1);
|
|
187
|
+
}
|
|
188
|
+
return parentStore?.get(value);
|
|
189
|
+
}
|
|
190
|
+
return prop.value;
|
|
191
|
+
}
|
|
192
|
+
replaceInterpolation(template, interpolation, value) {
|
|
193
|
+
const key = typeof interpolation === "string" ? interpolation : interpolation.name;
|
|
194
|
+
return template.replace(new RegExp(`${this.config.interpolationDelimiters[0]}\\s*${key}\\s*${this.config.interpolationDelimiters[1]}`, "g"), value !== void 0 ? String(value) : "");
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
__decorateClass([
|
|
198
|
+
A_Frame.Method({
|
|
199
|
+
description: "Determines if a given AreNode is a root node based on its entity type."
|
|
200
|
+
})
|
|
201
|
+
], AreSyntax.prototype, "isRootNode", 1);
|
|
202
|
+
__decorateClass([
|
|
203
|
+
A_Frame.Method({
|
|
204
|
+
description: "Determines if a given AreNode represents a custom component as opposed to a standard HTML tag."
|
|
205
|
+
})
|
|
206
|
+
], AreSyntax.prototype, "isCustomNode", 1);
|
|
207
|
+
__decorateClass([
|
|
208
|
+
A_Frame.Method({
|
|
209
|
+
description: "Extracts root AreNode elements from the document based on the configured root tag."
|
|
210
|
+
})
|
|
211
|
+
], AreSyntax.prototype, "extractRoots", 1);
|
|
212
|
+
__decorateClass([
|
|
213
|
+
A_Frame.Method({
|
|
214
|
+
description: "Extracts interpolations from a template string based on the configured interpolation delimiters."
|
|
215
|
+
})
|
|
216
|
+
], AreSyntax.prototype, "extractInterpolations", 1);
|
|
217
|
+
__decorateClass([
|
|
218
|
+
A_Frame.Method({
|
|
219
|
+
description: "Extracts custom directives from the first opening tag of a template string."
|
|
220
|
+
})
|
|
221
|
+
], AreSyntax.prototype, "extractDirectives", 1);
|
|
222
|
+
AreSyntax = __decorateClass([
|
|
223
|
+
A_Frame.Component({
|
|
224
|
+
namespace: "A-ARE",
|
|
225
|
+
name: "AreSyntax",
|
|
226
|
+
description: "Context component that defines the syntax rules and structures for the A-Concept Rendering Engine (ARE). It provides mechanisms for parsing and interpreting templates, attributes, directives, interpolations, and event listeners, enabling dynamic and interactive UI rendering within the ARE framework."
|
|
227
|
+
})
|
|
228
|
+
], AreSyntax);
|
|
229
|
+
|
|
230
|
+
export { AreSyntax };
|
|
231
|
+
//# sourceMappingURL=AreSyntax.component.mjs.map
|
|
232
|
+
//# sourceMappingURL=AreSyntax.component.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/AreSyntax/AreSyntax.component.ts"],"names":[],"mappings":"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","file":"AreSyntax.component.mjs","sourcesContent":["import { A_Component, A_Context, A_Error } from \"@adaas/a-concept\";\nimport { A_Frame } from \"@adaas/a-frame\";\nimport { AreDirective, AreInterpolation, AreAttribute, AreListener } from \"./AreSyntax.types\";\nimport { AreSyntaxContext } from \"./AreSyntax.context\";\nimport { AreNode } from \"@adaas/are/node\";\nimport type { AreStore } from \"@adaas/are/store\";\n\n\n@A_Frame.Component({\n namespace: 'A-ARE',\n name: 'AreSyntax',\n description: 'Context component that defines the syntax rules and structures for the A-Concept Rendering Engine (ARE). It provides mechanisms for parsing and interpreting templates, attributes, directives, interpolations, and event listeners, enabling dynamic and interactive UI rendering within the ARE framework.'\n})\nexport class AreSyntax extends A_Component {\n\n\n get config(): AreSyntaxContext {\n return A_Context.scope(this).resolveFlat<AreSyntaxContext>(AreSyntaxContext)!;\n }\n\n\n /**\n * Determines if a tag is a root node\n * \n * @param node \n * @returns \n */\n @A_Frame.Method({\n description: 'Determines if a given AreNode is a root node based on its entity type.'\n })\n isRootNode(node: AreNode): boolean {\n return node.aseid.entity.toLowerCase() === this.config.rootTag;\n }\n\n /**\n * Determines if a tag is a custom component or standard HTML\n * \n * @param node \n * @returns \n */\n @A_Frame.Method({\n description: 'Determines if a given AreNode represents a custom component as opposed to a standard HTML tag.'\n })\n isCustomNode(node: AreNode): boolean {\n return !this.config.standardTags.has(node.aseid.entity.toLowerCase());\n }\n\n\n /**\n * Extracts root AreNode elements from the document based on the configured root tag.\n * \n * @returns An iterable of AreNode instances representing the root elements.\n */\n @A_Frame.Method({\n description: 'Extracts root AreNode elements from the document based on the configured root tag.'\n })\n extractRoots(template: string): AreNode[] {\n const rootTag = this.config.rootTag;\n const rootTagRegex = new RegExp(`<${rootTag}([\\\\s>])`, 'gi');\n let match: RegExpExecArray | null;\n const nodes: AreNode[] = [];\n\n while ((match = rootTagRegex.exec(template)) !== null) {\n const startIndex = match.index;\n const endTag = `</${rootTag}>`;\n const endIndex = template.indexOf(endTag, startIndex);\n\n if (endIndex === -1) {\n throw new A_Error(`Missing closing tag for <${rootTag}> starting at index ${startIndex}`);\n }\n\n const attributes = this.extractAttributes(template.slice(startIndex, endIndex + endTag.length));\n let rootId = `auto-root-${startIndex}`;\n \n for (let i = 0; i < attributes.length; i++) {\n if (attributes[i].name === 'id') {\n rootId = attributes[i].value;\n break;\n }\n }\n\n const markup = template.slice(startIndex, endIndex + endTag.length);\n const content = markup.slice(rootTag.length + 2, -endTag.length).trim();\n \n\n const node = new AreNode({\n id: rootId,\n scope: 'are',\n component: 'are-root',\n markup: markup,\n template: content,\n });\n\n nodes.push(node);\n }\n \n return nodes;\n }\n\n\n /**\n * Extracts interpolations from template (syntax-agnostic).\n * \n * Simply finds all interpolation patterns and returns their position, raw text, and name.\n * Works with any template format - HTML, plain text, or any other syntax.\n * \n * Example: `Hello {{name}}, welcome to {{place}}!`\n * Returns: [\n * { raw: \"{{name}}\", name: \"name\", position: 6 },\n * { raw: \"{{place}}\", name: \"place\", position: 26 }\n * ]\n * \n * @param template - Template string in any format\n */\n @A_Frame.Method({\n description: 'Extracts interpolations from a template string based on the configured interpolation delimiters.'\n })\n extractInterpolations(template: string): AreInterpolation[] {\n const interpolationRegex = new RegExp(`${this.config.interpolationDelimiters[0]}\\\\s*([a-zA-Z0-9_.$]+)\\\\s*${this.config.interpolationDelimiters[1]}`, 'g');\n const interpolations: AreInterpolation[] = [];\n\n let match: RegExpExecArray | null;\n while ((match = interpolationRegex.exec(template)) !== null) {\n interpolations.push({\n raw: match[0],\n name: match[1],\n position: match.index!\n });\n }\n \n return interpolations;\n }\n\n /**\n * Extracts custom directives from the FIRST/TOP-LEVEL opening tag ONLY.\n * Directives start with `$`\n *\n * Examples:\n * $if=\"condition\"\n * $show\n * $no-update=\"\"\n * \n * Note: This method intentionally ignores nested elements and only processes\n * the very first opening tag in the provided template string.\n */\n @A_Frame.Method({\n description: 'Extracts custom directives from the first opening tag of a template string.'\n })\n extractDirectives(template: string): AreDirective[] {\n // Trim whitespace to ensure we start at the actual first tag\n const trimmedTemplate = template.trim();\n\n // Match ONLY the very first opening tag (anchored with ^)\n const firstTagMatch = trimmedTemplate.match(\n /^<([a-zA-Z][^\\s/>]*)(\\s[^>]*?)?>/\n );\n\n if (!firstTagMatch) return [];\n\n const tag = firstTagMatch[1];\n const attributesPart = firstTagMatch[2];\n\n // If no attributes, no directives possible\n if (!attributesPart) return [];\n\n /**\n * Extract directives from the first tag's attributes only.\n * Matches patterns like:\n * $if=\"condition\"\n * $show\n * $no-update=\"\"\n */\n const directiveRegex = new RegExp(\n `\\\\s+(\\\\${this.config.directiveDelimiter}[a-zA-Z0-9_-]+)(?:\\\\s*=\\\\s*(?:\"([^\"]*)\"|'([^']*)'))?`,\n 'g'\n );\n\n let match: RegExpExecArray | null;\n const directives: AreDirective[] = [];\n\n while ((match = directiveRegex.exec(attributesPart)) !== null) {\n const name = match[1];\n\n // Optional whitelist support - only apply if whitelist is explicitly provided\n if (\n this.config.customDirectives &&\n this.config.customDirectives.length > 0 &&\n !this.config.customDirectives.includes(name)\n ) {\n continue;\n }\n\n const raw = match[0];\n const value = match[2] ?? match[3];\n const tagTemplate = firstTagMatch[0]; // Only the first tag\n\n directives.push({\n tag,\n name,\n raw,\n value,\n template: tagTemplate\n });\n }\n \n return directives;\n }\n\n\n /**\n * Extracts component props from the FIRST opening tag.\n *\n * Examples:\n * label=\"Click\"\n * :label=\"'Click Me'\"\n *\n * Excludes:\n * @click\n * $if\n */\n extractAttributes(template: string): AreAttribute[] {\n // Match first opening tag\n const firstTagMatch = template.match(\n /^<([a-zA-Z][^\\s/>]*)(\\s[^>]*?)?>/\n );\n\n if (!firstTagMatch) return [];\n\n const tag = firstTagMatch[1];\n const attributesPart = firstTagMatch[2];\n\n if (!attributesPart) return [];\n\n /**\n * Matches:\n * label=\"text\"\n * :label=\"'Click'\"\n *\n * Skips:\n * @click\n * $if\n */\n const propRegex = new RegExp(\n `\\\\s+(\\\\${this.config.bindingDelimiter}?)([a-zA-Z][a-zA-Z0-9._-]*)\\\\s*=\\\\s*(?:\"([^\"]*)\"|'([^']*)')`,\n 'g'\n );\n\n let match: RegExpExecArray | null;\n const attributes: AreAttribute[] = [];\n\n while ((match = propRegex.exec(attributesPart)) !== null) {\n const isBinding = match[1] === this.config.bindingDelimiter;\n const name = match[2];\n\n // Exclude listeners & directives explicitly\n if (\n name.startsWith(this.config.listenerDelimiter) ||\n name.startsWith(this.config.directiveDelimiter)\n ) {\n continue;\n }\n\n const raw = match[0];\n const value = match[3] ?? match[4];\n\n attributes.push({\n tag,\n name,\n raw,\n value: value || '',\n binding: isBinding\n });\n }\n \n return attributes;\n }\n\n\n /**\n * Extracts event listeners from the FIRST/TOP-LEVEL opening tag ONLY in the template.\n * Supports:\n * - @event=\"handler\"\n * - @event='handler'\n * \n * Note: This method intentionally ignores nested elements and only processes\n * the very first opening tag in the provided template string.\n */\n extractListeners(template: string): AreListener[] {\n // Trim whitespace to ensure we start at the actual first tag\n const trimmedTemplate = template.trim();\n\n // Match ONLY the very first opening tag (anchored with ^)\n const firstTagMatch = trimmedTemplate.match(\n /^<([a-zA-Z][^\\s/>]*)(\\s[^>]*?)?>/\n );\n\n if (!firstTagMatch) return [];\n\n const tag = firstTagMatch[1];\n const attributesPart = firstTagMatch[2];\n\n // If no attributes, no listeners possible\n if (!attributesPart) return [];\n\n /**\n * Extract listeners from the first tag's attributes only.\n * Match listener attributes:\n * @input=\"onChange\"\n * @change='handleChange'\n */\n const listenerRegex = new RegExp(\n `\\\\s+${this.config.listenerDelimiter}([a-zA-Z0-9_:-]+)` +\n `\\\\s*=\\\\s*(?:\"([^\"]*)\"|'([^']*)')`,\n 'g'\n );\n\n let match: RegExpExecArray | null;\n const listeners: AreListener[] = [];\n\n while ((match = listenerRegex.exec(attributesPart)) !== null) {\n const raw = match[0];\n const name = match[1];\n const handler = match[2] ?? match[3] ?? \"\";\n\n listeners.push({\n tag,\n name,\n raw,\n handler\n });\n }\n \n return listeners;\n }\n\n\n\n isBindingProp(prop: AreAttribute): boolean {\n return prop.raw.trim().startsWith(this.config.bindingDelimiter)\n }\n\n\n extractPropValue(prop: AreAttribute, parentStore: AreStore): any {\n\n if (prop.value == null) {\n return undefined;\n }\n\n // Binding prop (starts with :)\n if (prop.binding) {\n const value = prop.value.trim();\n\n // Static literal binding: :label=\"'Click'\" or :\"Click\"\n if (\n (value.startsWith(\"'\") && value.endsWith(\"'\")) ||\n (value.startsWith('\"') && value.endsWith('\"'))\n ) {\n return value.slice(1, -1);\n }\n\n // Dynamic binding: :label=\"someKey\"\n // (future: expressions, paths, computed, etc.)\n return parentStore?.get(value);\n }\n\n // Static prop: label=\"Click\"\n return prop.value;\n }\n\n\n replaceInterpolation(template: string, interpolation: AreInterpolation | string, value: any): string {\n const key = typeof interpolation === 'string' ? interpolation : interpolation.name;\n\n return template.replace(new RegExp(`${this.config.interpolationDelimiters[0]}\\\\s*${key}\\\\s*${this.config.interpolationDelimiters[1]}`, 'g'), value !== undefined ? String(value) : '');\n }\n\n\n}"]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { A_Fragment } from '@adaas/a-concept';
|
|
2
|
+
import { AreSyntaxInitOptions } from './AreSyntax.types.mjs';
|
|
3
|
+
|
|
4
|
+
declare class AreSyntaxContext extends A_Fragment {
|
|
5
|
+
/**
|
|
6
|
+
* Initialization options for configuring the AreSyntax context.
|
|
7
|
+
*/
|
|
8
|
+
protected readonly config: Partial<AreSyntaxInitOptions>;
|
|
9
|
+
constructor(
|
|
10
|
+
/**
|
|
11
|
+
* Initialization options for configuring the AreSyntax context.
|
|
12
|
+
*/
|
|
13
|
+
config?: Partial<AreSyntaxInitOptions>);
|
|
14
|
+
/**
|
|
15
|
+
* identifier of the root tag to use when compiling in browser context.
|
|
16
|
+
*
|
|
17
|
+
* @return {string} The root tag identifier.
|
|
18
|
+
*/
|
|
19
|
+
get rootTag(): string;
|
|
20
|
+
/**
|
|
21
|
+
* List of standard HTML tags to recognize.
|
|
22
|
+
* [!] This is a set of tags that can be ignored when determining if a node is a custom component.
|
|
23
|
+
*
|
|
24
|
+
* @return {Set<string>} A set of standard HTML tag names.
|
|
25
|
+
*/
|
|
26
|
+
get standardTags(): Set<string>;
|
|
27
|
+
/**
|
|
28
|
+
* Enable or disable debug mode for syntax parsing.
|
|
29
|
+
* When enabled, additional debug information will be logged during parsing.
|
|
30
|
+
*
|
|
31
|
+
* @return {boolean} True if debug mode is enabled, false otherwise.
|
|
32
|
+
*/
|
|
33
|
+
get debugMode(): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Custom interpolation delimiters for template parsing.
|
|
36
|
+
* Default is ['{{', '}}'].
|
|
37
|
+
*
|
|
38
|
+
* @return {[string, string]} The opening and closing interpolation delimiters.
|
|
39
|
+
*/
|
|
40
|
+
get interpolationDelimiters(): [string, string];
|
|
41
|
+
/**
|
|
42
|
+
* Custom binding delimiter for data binding parsing.
|
|
43
|
+
* Default is ':'.
|
|
44
|
+
* @return {string} The binding delimiter.
|
|
45
|
+
*/
|
|
46
|
+
get bindingDelimiter(): string;
|
|
47
|
+
/**
|
|
48
|
+
* Custom listener delimiter for event binding parsing.
|
|
49
|
+
* Default is '@'.
|
|
50
|
+
*
|
|
51
|
+
* @return {string} The listener delimiter.
|
|
52
|
+
*/
|
|
53
|
+
get listenerDelimiter(): string;
|
|
54
|
+
/**
|
|
55
|
+
* Enable or disable strict mode for syntax parsing.
|
|
56
|
+
* When enabled, the parser will throw errors for any syntax violations.
|
|
57
|
+
* Default is true.
|
|
58
|
+
*
|
|
59
|
+
* @return {boolean} True if strict mode is enabled, false otherwise.
|
|
60
|
+
*/
|
|
61
|
+
get strictMode(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Enable or disable whitespace trimming in templates.
|
|
64
|
+
* When enabled, leading and trailing whitespace in template expressions will be trimmed.
|
|
65
|
+
* Default is true.
|
|
66
|
+
*
|
|
67
|
+
* @return {boolean} True if whitespace trimming is enabled, false otherwise.
|
|
68
|
+
*/
|
|
69
|
+
get trimWhitespace(): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Custom directive delimiter for directive parsing.
|
|
72
|
+
* Default is '$'.
|
|
73
|
+
*
|
|
74
|
+
* @return {string} The directive delimiter.
|
|
75
|
+
*/
|
|
76
|
+
get directiveDelimiter(): string;
|
|
77
|
+
get customDirectives(): string[];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export { AreSyntaxContext };
|