Initial Commit from Ember CLI v6.9.1
_...,
,:^;,...;
-+===;. ,,--++====++-,,, .: /.....,
:::::~+++++#:,+#++++++++++++++++++#*..: /,......
(,,,,,,::=+++##++++++++++++++++++++++#. :....../
...,,,,,::++++++++++++++++++++++++++++++*..,...:
*..+...,#@@@@@@@@@++++++++++++++++++++++#*....*
@#,;##############@@@+*+#@@@@@@@@@@#*++#..<
*@##@@+,-*^^^*-+@####@@@######@@@#####@@,,,+
@#@* @#@@@@#@@+--*^^*--#@@@@@@#
@#@. @# @##+++@#, .@@#@@
#@# @@ +@@++++#@@ @@ :@@
:@#* @#@++++++@#* #@ @@+
:*+@@#;,.__.+@#@+,-^^.++@# @@++
;* :*@@@##@@@@;++r._j^.+@##@+,.__,,@@++.
/* ........+++++++++++++#@@@@@###@@#++++,
,: ...,@@@#++===----==@@@####,,....+++++
.: ......@@##@\ ; :@####@,,...... +++.
; .........@###, ; ;xx#@;,,..... *;+,
| ........,*;xxxx--^--=xxx,........ :+#;
; ......,,;xxxxxxxxxxxxx;,..... *+#
; ......,::xxxx;. ...... +. .
*; ......... +### .... / ,. /:| ,.
.+: ... ;##++##, . ,#. (..v..;*./
** ## ###* .:*&&&+. \.,....<,
#&+**==-..,,__ ;## ### :,*+&&&&&&&v+#&,,.._/
#&&&&*...,::,,. ##; ,##* .*****;:&&&&&&&&&
,+*+;~*..*** *.* ### ###* ******* *+#&;*
##,;## **** :, **
##### ## ### ###, ######## .##### ;## ##
####### ;## #### ,###. ########## ######## ### ####
### ### ### ########## #### #### ,## ### #######*
### ,### ##############: ## ### #### ,## :#### ### ##;
########## ########### ## .## ,### ####### ##### :######
###### .###### #### ## ### ### ######* :##### ####
############# #### ################ ######## ###
#####* *#* #: :### *###* *#### #*
This commit is contained in:
commit
2b5d392eb0
19
.editorconfig
Normal file
19
.editorconfig
Normal file
@ -0,0 +1,19 @@
|
||||
# EditorConfig helps developers define and maintain consistent
|
||||
# coding styles between different editors and IDEs
|
||||
# https://editorconfig.org/
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.hbs]
|
||||
insert_final_newline = false
|
||||
|
||||
[*.{diff,md}]
|
||||
trim_trailing_whitespace = false
|
||||
8
.env.development
Normal file
8
.env.development
Normal file
@ -0,0 +1,8 @@
|
||||
# This file is committed to git and should not contain any secrets.
|
||||
#
|
||||
# Vite recommends using .env.local or .env.[mode].local if you need to manage secrets
|
||||
# SEE: https://vite.dev/guide/env-and-mode.html#env-files for more information.
|
||||
|
||||
|
||||
# Default NODE_ENV with vite build --mode=test is production
|
||||
NODE_ENV=development
|
||||
53
.github/workflows/ci.yml
vendored
Normal file
53
.github/workflows/ci.yml
vendored
Normal file
@ -0,0 +1,53 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
pull_request: {}
|
||||
|
||||
concurrency:
|
||||
group: ci-${{ github.head_ref || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
name: "Lint"
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: pnpm/action-setup@v4
|
||||
with:
|
||||
version: 10
|
||||
- name: Install Node
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: 22
|
||||
cache: pnpm
|
||||
- name: Install Dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
- name: Lint
|
||||
run: pnpm lint
|
||||
|
||||
test:
|
||||
name: "Test"
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: pnpm/action-setup@v4
|
||||
with:
|
||||
version: 10
|
||||
- name: Install Node
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: 22
|
||||
cache: pnpm
|
||||
- name: Install Dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
- name: Run Tests
|
||||
run: pnpm test
|
||||
25
.gitignore
vendored
Normal file
25
.gitignore
vendored
Normal file
@ -0,0 +1,25 @@
|
||||
# compiled output
|
||||
/dist/
|
||||
/tmp/
|
||||
|
||||
# dependencies
|
||||
/node_modules/
|
||||
|
||||
# misc
|
||||
*.local
|
||||
/.pnp*
|
||||
/.eslintcache
|
||||
/coverage/
|
||||
/npm-debug.log*
|
||||
/testem.log
|
||||
/yarn-error.log
|
||||
|
||||
# ember-try
|
||||
/.node_modules.ember-try/
|
||||
/npm-shrinkwrap.json.ember-try
|
||||
/package.json.ember-try
|
||||
/package-lock.json.ember-try
|
||||
/yarn.lock.ember-try
|
||||
|
||||
# broccoli-debug
|
||||
/DEBUG/
|
||||
13
.prettierignore
Normal file
13
.prettierignore
Normal file
@ -0,0 +1,13 @@
|
||||
# unconventional js
|
||||
/blueprints/*/files/
|
||||
|
||||
# compiled output
|
||||
/dist/
|
||||
|
||||
# misc
|
||||
/coverage/
|
||||
!.*
|
||||
.*/
|
||||
/pnpm-lock.yaml
|
||||
ember-cli-update.json
|
||||
*.html
|
||||
37
.prettierrc.mjs
Normal file
37
.prettierrc.mjs
Normal file
@ -0,0 +1,37 @@
|
||||
export default {
|
||||
plugins: ['prettier-plugin-ember-template-tag'],
|
||||
singleQuote: true,
|
||||
overrides: [
|
||||
{
|
||||
files: ['*.js', '*.ts', '*.cjs', '.mjs', '.cts', '.mts', '.cts'],
|
||||
options: {
|
||||
trailingComma: 'es5',
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['*.html'],
|
||||
options: {
|
||||
singleQuote: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['*.json'],
|
||||
options: {
|
||||
singleQuote: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['*.hbs'],
|
||||
options: {
|
||||
singleQuote: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['*.gjs', '*.gts'],
|
||||
options: {
|
||||
templateSingleQuote: false,
|
||||
trailingComma: 'es5',
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
5
.stylelintignore
Normal file
5
.stylelintignore
Normal file
@ -0,0 +1,5 @@
|
||||
# unconventional files
|
||||
/blueprints/*/files/
|
||||
|
||||
# compiled output
|
||||
/dist/
|
||||
3
.stylelintrc.mjs
Normal file
3
.stylelintrc.mjs
Normal file
@ -0,0 +1,3 @@
|
||||
export default {
|
||||
extends: ['stylelint-config-standard'],
|
||||
};
|
||||
3
.template-lintrc.mjs
Normal file
3
.template-lintrc.mjs
Normal file
@ -0,0 +1,3 @@
|
||||
export default {
|
||||
extends: 'recommended',
|
||||
};
|
||||
3
.watchmanconfig
Normal file
3
.watchmanconfig
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"ignore_dirs": ["dist"]
|
||||
}
|
||||
55
README.md
Normal file
55
README.md
Normal file
@ -0,0 +1,55 @@
|
||||
# marco
|
||||
|
||||
This README outlines the details of collaborating on this Ember application.
|
||||
A short introduction of this app could easily go here.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
You will need the following things properly installed on your computer.
|
||||
|
||||
- [Git](https://git-scm.com/)
|
||||
- [Node.js](https://nodejs.org/)
|
||||
- [pnpm](https://pnpm.io/)
|
||||
- [Google Chrome](https://google.com/chrome/)
|
||||
|
||||
## Installation
|
||||
|
||||
- `git clone <repository-url>` this repository
|
||||
- `cd marco`
|
||||
- `pnpm install`
|
||||
|
||||
## Running / Development
|
||||
|
||||
- `pnpm start`
|
||||
- Visit your app at [http://localhost:4200](http://localhost:4200).
|
||||
- Visit your tests at [http://localhost:4200/tests](http://localhost:4200/tests).
|
||||
|
||||
### Code Generators
|
||||
|
||||
Make use of the many generators for code, try `pnpm ember help generate` for more details
|
||||
|
||||
### Running Tests
|
||||
|
||||
- `pnpm test`
|
||||
|
||||
### Linting
|
||||
|
||||
- `pnpm lint`
|
||||
- `pnpm lint:fix`
|
||||
|
||||
### Building
|
||||
|
||||
- `pnpm vite build --mode development` (development)
|
||||
- `pnpm build` (production)
|
||||
|
||||
### Deploying
|
||||
|
||||
Specify what it takes to deploy your app.
|
||||
|
||||
## Further Reading / Useful Links
|
||||
|
||||
- [ember.js](https://emberjs.com/)
|
||||
- [Vite](https://vite.dev)
|
||||
- Development Browser Extensions
|
||||
- [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi)
|
||||
- [ember inspector for firefox](https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/)
|
||||
18
app/app.js
Normal file
18
app/app.js
Normal file
@ -0,0 +1,18 @@
|
||||
import '@warp-drive/ember/install';
|
||||
import Application from '@ember/application';
|
||||
import compatModules from '@embroider/virtual/compat-modules';
|
||||
import Resolver from 'ember-resolver';
|
||||
import config from 'marco/config/environment';
|
||||
import { importSync, isDevelopingApp, macroCondition } from '@embroider/macros';
|
||||
import setupInspector from '@embroider/legacy-inspector-support/ember-source-4.12';
|
||||
|
||||
if (macroCondition(isDevelopingApp())) {
|
||||
importSync('./deprecation-workflow');
|
||||
}
|
||||
|
||||
export default class App extends Application {
|
||||
modulePrefix = config.modulePrefix;
|
||||
podModulePrefix = config.podModulePrefix;
|
||||
Resolver = Resolver.withModules(compatModules);
|
||||
inspector = setupInspector(this);
|
||||
}
|
||||
0
app/components/.gitkeep
Normal file
0
app/components/.gitkeep
Normal file
22
app/config/environment.js
Normal file
22
app/config/environment.js
Normal file
@ -0,0 +1,22 @@
|
||||
import { getGlobalConfig } from '@embroider/macros/src/addon/runtime';
|
||||
|
||||
const ENV = {
|
||||
modulePrefix: 'marco',
|
||||
environment: import.meta.env.DEV ? 'development' : 'production',
|
||||
rootURL: '/',
|
||||
locationType: 'history',
|
||||
EmberENV: {},
|
||||
APP: {},
|
||||
};
|
||||
|
||||
export default ENV;
|
||||
|
||||
export function enterTestMode() {
|
||||
ENV.locationType = 'none';
|
||||
ENV.APP.rootElement = '#ember-testing';
|
||||
ENV.APP.autoboot = false;
|
||||
|
||||
const config = getGlobalConfig()['@embroider/macros'];
|
||||
|
||||
if (config) config.isTesting = true;
|
||||
}
|
||||
24
app/deprecation-workflow.js
Normal file
24
app/deprecation-workflow.js
Normal file
@ -0,0 +1,24 @@
|
||||
import setupDeprecationWorkflow from 'ember-cli-deprecation-workflow';
|
||||
|
||||
/**
|
||||
* Docs: https://github.com/ember-cli/ember-cli-deprecation-workflow
|
||||
*/
|
||||
setupDeprecationWorkflow({
|
||||
/**
|
||||
false by default, but if a developer / team wants to be more aggressive about being proactive with
|
||||
handling their deprecations, this should be set to "true"
|
||||
*/
|
||||
throwOnUnhandled: false,
|
||||
workflow: [
|
||||
/* ... handlers ... */
|
||||
/* to generate this list, run your app for a while (or run the test suite),
|
||||
* and then run in the browser console:
|
||||
*
|
||||
* deprecationWorkflow.flushDeprecations()
|
||||
*
|
||||
* And copy the handlers here
|
||||
*/
|
||||
/* example: */
|
||||
/* { handler: 'silence', matchId: 'template-action' }, */
|
||||
],
|
||||
});
|
||||
9
app/router.js
Normal file
9
app/router.js
Normal file
@ -0,0 +1,9 @@
|
||||
import EmberRouter from '@embroider/router';
|
||||
import config from 'marco/config/environment';
|
||||
|
||||
export default class Router extends EmberRouter {
|
||||
location = config.locationType;
|
||||
rootURL = config.rootURL;
|
||||
}
|
||||
|
||||
Router.map(function () {});
|
||||
0
app/routes/.gitkeep
Normal file
0
app/routes/.gitkeep
Normal file
15
app/services/store.js
Normal file
15
app/services/store.js
Normal file
@ -0,0 +1,15 @@
|
||||
import { useLegacyStore } from '@warp-drive/legacy';
|
||||
import { JSONAPICache } from '@warp-drive/json-api';
|
||||
|
||||
const Store = useLegacyStore({
|
||||
linksMode: true,
|
||||
cache: JSONAPICache,
|
||||
handlers: [
|
||||
// -- your handlers here
|
||||
],
|
||||
schemas: [
|
||||
// -- your schemas here
|
||||
],
|
||||
});
|
||||
|
||||
export default Store;
|
||||
1
app/styles/app.css
Normal file
1
app/styles/app.css
Normal file
@ -0,0 +1 @@
|
||||
/* Ember supports plain CSS out of the box. More info: https://cli.emberjs.com/release/advanced-use/stylesheets/ */
|
||||
12
app/templates/application.gjs
Normal file
12
app/templates/application.gjs
Normal file
@ -0,0 +1,12 @@
|
||||
import { pageTitle } from 'ember-page-title';
|
||||
import { WelcomePage } from 'ember-welcome-page';
|
||||
|
||||
<template>
|
||||
{{pageTitle "Marco"}}
|
||||
|
||||
{{outlet}}
|
||||
|
||||
{{! The following component displays Ember's default welcome message. }}
|
||||
<WelcomePage @extension="gjs" />
|
||||
{{! Feel free to remove this! }}
|
||||
</template>
|
||||
46
babel.config.mjs
Normal file
46
babel.config.mjs
Normal file
@ -0,0 +1,46 @@
|
||||
import { dirname } from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { setConfig } from '@warp-drive/core/build-config';
|
||||
import { buildMacros } from '@embroider/macros/babel';
|
||||
|
||||
const macros = buildMacros({
|
||||
configure: (config) => {
|
||||
setConfig(config, {
|
||||
// for universal apps this MUST be at least 5.6
|
||||
compatWith: '5.6',
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
export default {
|
||||
plugins: [
|
||||
[
|
||||
'babel-plugin-ember-template-compilation',
|
||||
{
|
||||
compilerPath: 'ember-source/dist/ember-template-compiler.js',
|
||||
transforms: [...macros.templateMacros],
|
||||
},
|
||||
],
|
||||
[
|
||||
'module:decorator-transforms',
|
||||
{
|
||||
runtime: {
|
||||
import: import.meta.resolve('decorator-transforms/runtime-esm'),
|
||||
},
|
||||
},
|
||||
],
|
||||
[
|
||||
'@babel/plugin-transform-runtime',
|
||||
{
|
||||
absoluteRuntime: dirname(fileURLToPath(import.meta.url)),
|
||||
useESModules: true,
|
||||
regenerator: false,
|
||||
},
|
||||
],
|
||||
...macros.babelMacros,
|
||||
],
|
||||
|
||||
generatorOpts: {
|
||||
compact: false,
|
||||
},
|
||||
};
|
||||
103
eslint.config.mjs
Normal file
103
eslint.config.mjs
Normal file
@ -0,0 +1,103 @@
|
||||
/**
|
||||
* Debugging:
|
||||
* https://eslint.org/docs/latest/use/configure/debug
|
||||
* ----------------------------------------------------
|
||||
*
|
||||
* Print a file's calculated configuration
|
||||
*
|
||||
* npx eslint --print-config path/to/file.js
|
||||
*
|
||||
* Inspecting the config
|
||||
*
|
||||
* npx eslint --inspect-config
|
||||
*
|
||||
*/
|
||||
import globals from 'globals';
|
||||
import js from '@eslint/js';
|
||||
import { defineConfig, globalIgnores } from 'eslint/config';
|
||||
|
||||
import ember from 'eslint-plugin-ember/recommended';
|
||||
import WarpDrive from 'eslint-plugin-warp-drive/recommended';
|
||||
import eslintConfigPrettier from 'eslint-config-prettier';
|
||||
import qunit from 'eslint-plugin-qunit';
|
||||
import n from 'eslint-plugin-n';
|
||||
|
||||
import babelParser from '@babel/eslint-parser/experimental-worker';
|
||||
|
||||
const esmParserOptions = {
|
||||
ecmaFeatures: { modules: true },
|
||||
ecmaVersion: 'latest',
|
||||
};
|
||||
|
||||
export default defineConfig([
|
||||
globalIgnores(['dist/', 'coverage/', '!**/.*']),
|
||||
js.configs.recommended,
|
||||
eslintConfigPrettier,
|
||||
ember.configs.base,
|
||||
ember.configs.gjs,
|
||||
...WarpDrive,
|
||||
/**
|
||||
* https://eslint.org/docs/latest/use/configure/configuration-files#configuring-linter-options
|
||||
*/
|
||||
{
|
||||
linterOptions: {
|
||||
reportUnusedDisableDirectives: 'error',
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['**/*.js'],
|
||||
languageOptions: {
|
||||
parser: babelParser,
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['**/*.{js,gjs}'],
|
||||
languageOptions: {
|
||||
parserOptions: esmParserOptions,
|
||||
globals: {
|
||||
...globals.browser,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ['tests/**/*-test.{js,gjs}'],
|
||||
plugins: {
|
||||
qunit,
|
||||
},
|
||||
},
|
||||
/**
|
||||
* CJS node files
|
||||
*/
|
||||
{
|
||||
files: ['**/*.cjs', 'config/**/*.js', 'ember-cli-build.js'],
|
||||
plugins: {
|
||||
n,
|
||||
},
|
||||
|
||||
languageOptions: {
|
||||
sourceType: 'script',
|
||||
ecmaVersion: 'latest',
|
||||
globals: {
|
||||
...globals.node,
|
||||
},
|
||||
},
|
||||
},
|
||||
/**
|
||||
* ESM node files
|
||||
*/
|
||||
{
|
||||
files: ['**/*.mjs'],
|
||||
plugins: {
|
||||
n,
|
||||
},
|
||||
|
||||
languageOptions: {
|
||||
sourceType: 'module',
|
||||
ecmaVersion: 'latest',
|
||||
parserOptions: esmParserOptions,
|
||||
globals: {
|
||||
...globals.node,
|
||||
},
|
||||
},
|
||||
},
|
||||
]);
|
||||
19
index.html
Normal file
19
index.html
Normal file
@ -0,0 +1,19 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Marco</title>
|
||||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<link rel="stylesheet" href="/app/styles/app.css">
|
||||
</head>
|
||||
<body>
|
||||
<script type="module">
|
||||
import Application from './app/app';
|
||||
import environment from './app/config/environment';
|
||||
|
||||
Application.create(environment.APP);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
87
package.json
Normal file
87
package.json
Normal file
@ -0,0 +1,87 @@
|
||||
{
|
||||
"name": "marco",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"description": "Small description for marco goes here",
|
||||
"repository": "",
|
||||
"license": "MIT",
|
||||
"author": "",
|
||||
"type": "module",
|
||||
"imports": {
|
||||
"#app/*": "./app/*",
|
||||
"#config": "./app/config/environment",
|
||||
"#components/*": "./app/components/*"
|
||||
},
|
||||
"exports": {
|
||||
"./tests/*": "./tests/*",
|
||||
"./*": "./app/*"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "vite build",
|
||||
"format": "prettier . --cache --write",
|
||||
"lint": "concurrently \"pnpm:lint:*(!fix)\" --names \"lint:\" --prefixColors auto",
|
||||
"lint:css": "stylelint \"**/*.css\"",
|
||||
"lint:css:fix": "concurrently \"pnpm:lint:css -- --fix\"",
|
||||
"lint:fix": "concurrently \"pnpm:lint:*:fix\" --names \"fix:\" --prefixColors auto && pnpm format",
|
||||
"lint:format": "prettier . --cache --check",
|
||||
"lint:hbs": "ember-template-lint .",
|
||||
"lint:hbs:fix": "ember-template-lint . --fix",
|
||||
"lint:js": "eslint . --cache",
|
||||
"lint:js:fix": "eslint . --fix",
|
||||
"start": "vite",
|
||||
"test": "vite build --mode development && testem ci --port 0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.28.5",
|
||||
"@babel/eslint-parser": "^7.28.5",
|
||||
"@babel/plugin-transform-runtime": "^7.28.5",
|
||||
"@babel/runtime": "^7.28.4",
|
||||
"@ember/test-helpers": "^5.4.1",
|
||||
"@ember/test-waiters": "^4.1.1",
|
||||
"@embroider/core": "^4.4.2",
|
||||
"@embroider/legacy-inspector-support": "^0.1.3",
|
||||
"@embroider/macros": "^1.19.6",
|
||||
"@embroider/router": "^3.0.6",
|
||||
"@embroider/vite": "^1.5.0",
|
||||
"@eslint/js": "^9.39.2",
|
||||
"@glimmer/component": "^2.0.0",
|
||||
"@rollup/plugin-babel": "^6.1.0",
|
||||
"@warp-drive/core": "~5.8.0",
|
||||
"@warp-drive/ember": "~5.8.0",
|
||||
"@warp-drive/json-api": "~5.8.0",
|
||||
"@warp-drive/legacy": "~5.8.0",
|
||||
"@warp-drive/utilities": "~5.8.0",
|
||||
"babel-plugin-ember-template-compilation": "^3.0.1",
|
||||
"concurrently": "^9.2.1",
|
||||
"decorator-transforms": "^2.3.1",
|
||||
"ember-cli-deprecation-workflow": "^4.0.0",
|
||||
"ember-modifier": "^4.2.2",
|
||||
"ember-page-title": "^9.0.3",
|
||||
"ember-qunit": "^9.0.4",
|
||||
"ember-resolver": "^13.1.1",
|
||||
"ember-source": "~6.11.0-alpha.6",
|
||||
"ember-template-lint": "^7.9.3",
|
||||
"ember-welcome-page": "^8.0.4",
|
||||
"eslint": "^9.39.2",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-ember": "^12.7.5",
|
||||
"eslint-plugin-n": "^17.23.1",
|
||||
"eslint-plugin-qunit": "^8.2.5",
|
||||
"eslint-plugin-warp-drive": "^5.8.0",
|
||||
"globals": "^16.5.0",
|
||||
"prettier": "^3.7.4",
|
||||
"prettier-plugin-ember-template-tag": "^2.1.2",
|
||||
"qunit": "^2.25.0",
|
||||
"qunit-dom": "^3.5.0",
|
||||
"stylelint": "^16.26.1",
|
||||
"stylelint-config-standard": "^38.0.0",
|
||||
"testem": "^3.17.0",
|
||||
"vite": "^7.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 24"
|
||||
},
|
||||
"ember": {
|
||||
"edition": "octane"
|
||||
}
|
||||
}
|
||||
8891
pnpm-lock.yaml
generated
Normal file
8891
pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
3
public/robots.txt
Normal file
3
public/robots.txt
Normal file
@ -0,0 +1,3 @@
|
||||
# https://www.robotstxt.org/
|
||||
User-agent: *
|
||||
Disallow:
|
||||
26
testem.cjs
Normal file
26
testem.cjs
Normal file
@ -0,0 +1,26 @@
|
||||
'use strict';
|
||||
|
||||
if (typeof module !== 'undefined') {
|
||||
module.exports = {
|
||||
test_page: 'tests/index.html?hidepassed',
|
||||
cwd: 'dist',
|
||||
disable_watching: true,
|
||||
launch_in_ci: ['Chrome'],
|
||||
launch_in_dev: ['Chrome'],
|
||||
browser_start_timeout: 120,
|
||||
browser_args: {
|
||||
Chrome: {
|
||||
ci: [
|
||||
// --no-sandbox is needed when running Chrome inside a container
|
||||
process.env.CI ? '--no-sandbox' : null,
|
||||
'--headless',
|
||||
'--disable-dev-shm-usage',
|
||||
'--disable-software-rasterizer',
|
||||
'--mute-audio',
|
||||
'--remote-debugging-port=0',
|
||||
'--window-size=1440,900',
|
||||
].filter(Boolean),
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
42
tests/helpers/index.js
Normal file
42
tests/helpers/index.js
Normal file
@ -0,0 +1,42 @@
|
||||
import {
|
||||
setupApplicationTest as upstreamSetupApplicationTest,
|
||||
setupRenderingTest as upstreamSetupRenderingTest,
|
||||
setupTest as upstreamSetupTest,
|
||||
} from 'ember-qunit';
|
||||
|
||||
// This file exists to provide wrappers around ember-qunit's
|
||||
// test setup functions. This way, you can easily extend the setup that is
|
||||
// needed per test type.
|
||||
|
||||
function setupApplicationTest(hooks, options) {
|
||||
upstreamSetupApplicationTest(hooks, options);
|
||||
|
||||
// Additional setup for application tests can be done here.
|
||||
//
|
||||
// For example, if you need an authenticated session for each
|
||||
// application test, you could do:
|
||||
//
|
||||
// hooks.beforeEach(async function () {
|
||||
// await authenticateSession(); // ember-simple-auth
|
||||
// });
|
||||
//
|
||||
// This is also a good place to call test setup functions coming
|
||||
// from other addons:
|
||||
//
|
||||
// setupIntl(hooks, 'en-us'); // ember-intl
|
||||
// setupMirage(hooks); // ember-cli-mirage
|
||||
}
|
||||
|
||||
function setupRenderingTest(hooks, options) {
|
||||
upstreamSetupRenderingTest(hooks, options);
|
||||
|
||||
// Additional setup for rendering tests can be done here.
|
||||
}
|
||||
|
||||
function setupTest(hooks, options) {
|
||||
upstreamSetupTest(hooks, options);
|
||||
|
||||
// Additional setup for unit tests can be done here.
|
||||
}
|
||||
|
||||
export { setupApplicationTest, setupRenderingTest, setupTest };
|
||||
31
tests/index.html
Normal file
31
tests/index.html
Normal file
@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Marco Tests</title>
|
||||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<link rel="stylesheet" href="/app/styles/app.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="qunit"></div>
|
||||
<div id="qunit-fixture">
|
||||
<div id="ember-testing-container">
|
||||
<div id="ember-testing"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/testem.js" integrity="" data-embroider-ignore></script>
|
||||
|
||||
<script type="module">import "ember-testing";</script>
|
||||
|
||||
<script type="module">
|
||||
import { start } from './test-helper';
|
||||
import.meta.glob("./**/*.{js,ts,gjs,gts}", { eager: true });
|
||||
start();
|
||||
</script>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
0
tests/integration/.gitkeep
Normal file
0
tests/integration/.gitkeep
Normal file
17
tests/test-helper.js
Normal file
17
tests/test-helper.js
Normal file
@ -0,0 +1,17 @@
|
||||
import '@warp-drive/ember/install';
|
||||
import Application from 'marco/app';
|
||||
import config, { enterTestMode } from 'marco/config/environment';
|
||||
import * as QUnit from 'qunit';
|
||||
import { setApplication } from '@ember/test-helpers';
|
||||
import { setup } from 'qunit-dom';
|
||||
import { start as qunitStart, setupEmberOnerrorValidation } from 'ember-qunit';
|
||||
|
||||
export function start() {
|
||||
enterTestMode();
|
||||
setApplication(Application.create(config.APP));
|
||||
|
||||
setup(QUnit.assert);
|
||||
setupEmberOnerrorValidation();
|
||||
|
||||
qunitStart();
|
||||
}
|
||||
0
tests/unit/.gitkeep
Normal file
0
tests/unit/.gitkeep
Normal file
14
vite.config.mjs
Normal file
14
vite.config.mjs
Normal file
@ -0,0 +1,14 @@
|
||||
import { defineConfig } from 'vite';
|
||||
import { extensions, ember } from '@embroider/vite';
|
||||
import { babel } from '@rollup/plugin-babel';
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [
|
||||
ember(),
|
||||
// extra plugins here
|
||||
babel({
|
||||
babelHelpers: 'runtime',
|
||||
extensions,
|
||||
}),
|
||||
],
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user